-
Notifications
You must be signed in to change notification settings - Fork 0
[ADD] entity 초기 구현 #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 1 commit
ab1a6c5
c92a4e5
d6f1c7c
3a4b468
2d40e98
c348e61
d27c3a4
b088ace
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| import com.record.zooc.domain.entity.BaseTimeEntityCreated | ||
| import jakarta.persistence.Entity | ||
| import jakarta.persistence.GeneratedValue | ||
| import jakarta.persistence.GenerationType | ||
| import jakarta.persistence.Id | ||
|
|
||
| @Entity | ||
| class Alarm() : BaseTimeEntityCreated() { | ||
| @Id | ||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
| var id: Long? = null | ||
| protected set | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| package com.record.zooc.domain.entity | ||
|
|
||
| import jakarta.persistence.Column | ||
| import jakarta.persistence.EntityListeners | ||
| import jakarta.persistence.MappedSuperclass | ||
| import org.springframework.data.annotation.CreatedDate | ||
| import org.springframework.data.jpa.domain.support.AuditingEntityListener | ||
| import java.time.LocalDateTime | ||
|
|
||
| @MappedSuperclass | ||
| @EntityListeners(AuditingEntityListener::class) | ||
| abstract class BaseTimeEntityCreated { | ||
| @CreatedDate | ||
| @Column(nullable = false, updatable = false) | ||
| var createdAt: LocalDateTime = LocalDateTime.now() | ||
| protected set | ||
| // var로 해야지 시간 저장될 때 오류 안남 | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| package com.record.zooc.domain.entity | ||
|
|
||
| import com.fasterxml.jackson.annotation.JsonFormat | ||
| import jakarta.persistence.Column | ||
| import jakarta.persistence.EntityListeners | ||
| import jakarta.persistence.MappedSuperclass | ||
| import org.springframework.data.annotation.CreatedDate | ||
| import org.springframework.data.annotation.LastModifiedDate | ||
| import org.springframework.data.jpa.domain.support.AuditingEntityListener | ||
| import java.time.LocalDateTime | ||
|
|
||
| @MappedSuperclass | ||
| @EntityListeners(AuditingEntityListener::class) | ||
| abstract class BaseTimeEntityModified { | ||
| @CreatedDate | ||
| @Column(nullable = false, updatable = false) | ||
| @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") | ||
| var createdAt: LocalDateTime = LocalDateTime.now() | ||
| protected set | ||
|
||
|
|
||
| @LastModifiedDate | ||
| @Column(nullable = false) | ||
| @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") | ||
| var modifiedAt: LocalDateTime = LocalDateTime.now() | ||
| protected set | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| import com.record.zooc.domain.entity.BaseTimeEntityModified | ||
| import jakarta.persistence.DiscriminatorColumn | ||
| import jakarta.persistence.Entity | ||
| import jakarta.persistence.GeneratedValue | ||
| import jakarta.persistence.GenerationType | ||
| import jakarta.persistence.Id | ||
| import jakarta.persistence.Inheritance | ||
| import jakarta.persistence.InheritanceType | ||
|
|
||
| @DiscriminatorColumn(name = "comment_type") | ||
| @Entity | ||
| @Inheritance(strategy = InheritanceType.JOINED) | ||
| class Comment( | ||
| ) : BaseTimeEntityModified() { | ||
| @Id | ||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
| var id: Long? = 0 | ||
|
||
| protected set | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| import jakarta.persistence.DiscriminatorValue | ||
|
|
||
| @DiscriminatorValue("Emoji") | ||
| class Emojicomment( | ||
| emoji: Int | ||
| ) : Comment() |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| class FcmToken() {} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| import com.record.zooc.domain.entity.BaseTimeEntityModified | ||
| import jakarta.persistence.Column | ||
| import jakarta.persistence.DiscriminatorColumn | ||
| import jakarta.persistence.Entity | ||
| import jakarta.persistence.GeneratedValue | ||
| import jakarta.persistence.GenerationType | ||
| import jakarta.persistence.Id | ||
| import jakarta.persistence.Inheritance | ||
| import jakarta.persistence.InheritanceType | ||
|
|
||
| @DiscriminatorColumn(name = "mission_type") | ||
| @Entity | ||
| @Inheritance(strategy = InheritanceType.JOINED) | ||
| class Memory( | ||
|
|
||
| @Column | ||
| var image: String, | ||
|
|
||
| @Column | ||
| var content: String, | ||
| ) : BaseTimeEntityModified() { | ||
| @Id | ||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
| val id: Long = 0; // ㅜㅜ 이거 어카지... | ||
|
||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| import jakarta.persistence.DiscriminatorValue | ||
|
|
||
| @DiscriminatorValue("Mission") | ||
| class Missionmemory( | ||
| image: String, | ||
| content: String | ||
| ) : Memory( | ||
| image, | ||
| content | ||
| ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| import jakarta.persistence.Column | ||
| import jakarta.persistence.Entity | ||
| import jakarta.persistence.GeneratedValue | ||
| import jakarta.persistence.GenerationType | ||
| import jakarta.persistence.Id | ||
|
|
||
| @Entity | ||
| class Pet( | ||
| name: String, | ||
| ) { | ||
| @Id | ||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
| var id: Long? = null | ||
| protected set | ||
|
|
||
| @Column(name = "profile_image") | ||
| var profileImage: String? = null | ||
| protected set | ||
|
|
||
| @Column | ||
| var name: String = name | ||
| protected set | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| import jakarta.persistence.DiscriminatorValue | ||
|
|
||
| @DiscriminatorValue("Record") | ||
| class Recordmemory( | ||
| image: String, | ||
| content: String | ||
| ) : Memory( | ||
| image, | ||
| content | ||
| ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| import jakarta.persistence.DiscriminatorValue | ||
|
|
||
| @DiscriminatorValue("Text") | ||
| class Textcomment( | ||
| content: String | ||
| ) : Comment() |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| import jakarta.persistence.Column | ||
| import jakarta.persistence.Entity | ||
| import jakarta.persistence.GeneratedValue | ||
| import jakarta.persistence.GenerationType | ||
| import jakarta.persistence.Id | ||
| import jakarta.persistence.Table | ||
|
|
||
| // @Builder가 필요한 상황 찾아보기 | ||
| // reflection 개념 찾아보기 | ||
|
|
||
| @Entity | ||
| @Table(name = "user") | ||
| class User( | ||
| role: String, | ||
| userEmail: String? = null, | ||
| profileImage: String? = null, | ||
| everRecorded: Boolean = false, | ||
| refreshToken: String, | ||
| snsToken: String, | ||
| snsType: String, | ||
| ) { | ||
| @Id | ||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
| var id: Long? = 0 | ||
| protected set | ||
| // 객체의 id를 null로 두고 데이터베이스에 insert일어날 때 생성되기 때문에 nullable이어야됨 | ||
|
|
||
| @Column | ||
| var role: String = role | ||
| protected set | ||
|
|
||
| @Column(name = "user_email") | ||
| var userEmail: String? = userEmail | ||
| protected set | ||
|
|
||
| @Column(name = "profile_image") | ||
| var profileImage: String? = profileImage | ||
| protected set | ||
|
|
||
| @Column(name = "ever_recorded") | ||
| var everRecorded: Boolean = everRecorded | ||
| protected set | ||
|
|
||
| @Column(name = "refresh_token") | ||
| var refreshToken: String = refreshToken | ||
| protected set | ||
|
|
||
| @Column(name = "sns_token") | ||
| var snsToken: String = snsToken | ||
| protected set | ||
|
|
||
| @Column(name = "sns_type") | ||
| var snsType: String = snsType | ||
| protected set | ||
|
|
||
| fun updateUserRoleAndProfile( | ||
| role: String? = null, | ||
| profileImage: String? = null, | ||
| ) { | ||
|
|
||
| if(role != null) this.role = role | ||
|
|
||
| //role이 null이 아니면 this에 role 저장 | ||
| role?.let { this.role = it } | ||
| profileImage?.let { this.profileImage = it } | ||
sunseo18 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| } | ||
|
|
||
| fun userRecordedForTheFirstTime() { | ||
| this.everRecorded = true | ||
| } | ||
|
|
||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,21 +1,21 @@ | ||
| server: | ||
| port: 8082 | ||
| port: 8082 | ||
|
|
||
| spring: | ||
| datasource: | ||
| driver-class-name: org.postgresql.Driver | ||
| url: ${url} | ||
| username: ${username} | ||
| password: ${password} | ||
| jpa: | ||
| hibernate: | ||
| ddl-auto: update | ||
| show-sql: true | ||
| database: postgresql | ||
| database-platform: org.hibernate.dialect.PostgreSQLDialect | ||
| open-in-view: false | ||
| generate-ddl: true | ||
| properties: | ||
| hibernate: | ||
| default_schema: dev | ||
| format_sql: true | ||
| datasource: | ||
| driver-class-name: org.postgresql.Driver | ||
| url: ${url} | ||
| username: ${username} | ||
| password: ${password} | ||
| jpa: | ||
| hibernate: | ||
| ddl-auto: update | ||
| show-sql: true | ||
| database: postgresql | ||
| database-platform: org.hibernate.dialect.PostgreSQLDialect | ||
| open-in-view: false | ||
| generate-ddl: true | ||
| properties: | ||
| hibernate: | ||
| default_schema: dev | ||
| format_sql: true |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,15 +1,15 @@ | ||
| server: | ||
| port: 8080 | ||
| port: 8080 | ||
|
|
||
| spring: | ||
| datasource: | ||
| driver-class-name: org.postgresql.Driver | ||
| url: ${url} | ||
| username: ${username} | ||
| password: ${password} | ||
| jpa: | ||
| database: postgresql | ||
| database-platform: org.hibernate.dialect.PostgreSQLDialect | ||
| properties: | ||
| hibernate: | ||
| default_schema: prod | ||
| datasource: | ||
| driver-class-name: org.postgresql.Driver | ||
| url: ${url} | ||
| username: ${username} | ||
| password: ${password} | ||
| jpa: | ||
| database: postgresql | ||
| database-platform: org.hibernate.dialect.PostgreSQLDialect | ||
| properties: | ||
| hibernate: | ||
| default_schema: prod |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
지금도 객체의 이름이 나쁘지는 않다고 생각은 들지만 조금 더 이해하기 쉬운 역할의 이름을 부여해 주는 것이 어떨까요?
이 추상 클래스가 해주고 싶은 역할은 결국 어떤 것일까요?
그 역할 이름을 부자연스러운 단어의 조합보다 그 역할 자체를 쉽게 풀어 쓰는 단어를 붙여주는 것이 좋지 않을까요?
마치 지금은 이름 자체만 보면 BaseTime 엔티티 생성된 과 같은 순서로 읽혀 정확히 어떤 일을 처리하고 싶은지 알기 힘든 것 같은 느낌이 듭니다.