Skip to content

Commit b27f9f0

Browse files
committed
refactor(AuditingEntity): 생성 시각 분리
- created_at 을 관리하는 Entity 를 추상 클래스로 분리
1 parent 0926c99 commit b27f9f0

File tree

5 files changed

+28
-21
lines changed

5 files changed

+28
-21
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package eatda.domain;
2+
3+
import jakarta.persistence.Column;
4+
import jakarta.persistence.MappedSuperclass;
5+
import jakarta.persistence.PrePersist;
6+
import java.time.LocalDateTime;
7+
import lombok.Getter;
8+
9+
@Getter
10+
@MappedSuperclass
11+
public abstract class AuditingEntity {
12+
13+
@Column(name = "created_at", nullable = false)
14+
private LocalDateTime createdAt;
15+
16+
@PrePersist
17+
protected void onCreate() {
18+
this.createdAt = LocalDateTime.now();
19+
}
20+
}

src/main/java/eatda/domain/article/Article.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package eatda.domain.article;
22

3+
import eatda.domain.AuditingEntity;
34
import jakarta.persistence.Column;
45
import jakarta.persistence.Entity;
56
import jakarta.persistence.GeneratedValue;
67
import jakarta.persistence.GenerationType;
78
import jakarta.persistence.Id;
89
import jakarta.persistence.Table;
9-
import java.time.LocalDateTime;
1010
import lombok.AccessLevel;
1111
import lombok.Getter;
1212
import lombok.NoArgsConstructor;
@@ -15,7 +15,7 @@
1515
@Entity
1616
@Getter
1717
@NoArgsConstructor(access = AccessLevel.PROTECTED)
18-
public class Article {
18+
public class Article extends AuditingEntity {
1919

2020
@Id
2121
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -33,14 +33,10 @@ public class Article {
3333
@Column(name = "image_key", nullable = false, length = 511)
3434
private String imageKey;
3535

36-
@Column(name = "created_at", nullable = false)
37-
private LocalDateTime createdAt;
38-
3936
public Article(String title, String subtitle, String articleUrl, String imageKey) {
4037
this.title = title;
4138
this.subtitle = subtitle;
4239
this.articleUrl = articleUrl;
4340
this.imageKey = imageKey;
44-
this.createdAt = LocalDateTime.now();
4541
}
4642
}

src/main/java/eatda/domain/member/Member.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package eatda.domain.member;
22

3+
import eatda.domain.AuditingEntity;
34
import eatda.exception.BusinessErrorCode;
45
import eatda.exception.BusinessException;
56
import jakarta.annotation.Nullable;
@@ -19,7 +20,7 @@
1920
@Entity
2021
@Getter
2122
@NoArgsConstructor(access = AccessLevel.PROTECTED)
22-
public class Member {
23+
public class Member extends AuditingEntity {
2324

2425
private static final String EMAIL_REGEX = "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$";
2526

@@ -42,16 +43,12 @@ public class Member {
4243
@Column(name = "opt_in_marketing")
4344
private Boolean optInMarketing;
4445

45-
@Column(name = "created_at", nullable = false)
46-
private LocalDateTime createdAt;
47-
4846
public Member(String socialId, String email, String nickname) {
4947
validateSocialId(socialId);
5048
validateEmail(email);
5149
this.socialId = socialId;
5250
this.email = email;
5351
this.nickname = nickname;
54-
this.createdAt = LocalDateTime.now();
5552
}
5653

5754
public Member(

src/main/java/eatda/domain/store/Cheer.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package eatda.domain.store;
22

3+
import eatda.domain.AuditingEntity;
34
import eatda.domain.member.Member;
45
import eatda.exception.BusinessErrorCode;
56
import eatda.exception.BusinessException;
@@ -21,7 +22,7 @@
2122
@Entity
2223
@Getter
2324
@NoArgsConstructor(access = AccessLevel.PROTECTED)
24-
public class Cheer {
25+
public class Cheer extends AuditingEntity {
2526

2627
@Id
2728
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -44,9 +45,6 @@ public class Cheer {
4445
@Column(name = "is_admin", nullable = false)
4546
private boolean isAdmin;
4647

47-
@Column(name = "created_at", nullable = false)
48-
private LocalDateTime createdAt;
49-
5048
public Cheer(Member member, Store store, String description, String imageKey) {
5149
validateDescription(description);
5250
validateImageKey(imageKey);
@@ -56,7 +54,6 @@ public Cheer(Member member, Store store, String description, String imageKey) {
5654
this.imageKey = imageKey;
5755

5856
this.isAdmin = false;
59-
this.createdAt = LocalDateTime.now();
6057
}
6158

6259
private void validateDescription(String description) {

src/main/java/eatda/domain/store/Store.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package eatda.domain.store;
22

3+
import eatda.domain.AuditingEntity;
34
import jakarta.persistence.Column;
45
import jakarta.persistence.Embedded;
56
import jakarta.persistence.Entity;
@@ -19,7 +20,7 @@
1920
@Entity
2021
@Getter
2122
@NoArgsConstructor(access = AccessLevel.PROTECTED)
22-
public class Store {
23+
public class Store extends AuditingEntity {
2324

2425
@Id
2526
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -50,9 +51,6 @@ public class Store {
5051
@Embedded
5152
private Coordinates coordinates;
5253

53-
@Column(name = "created_at", nullable = false)
54-
private LocalDateTime createdAt;
55-
5654
@Builder
5755
private Store(String kakaoId,
5856
StoreCategory category,
@@ -71,6 +69,5 @@ private Store(String kakaoId,
7169
this.roadAddress = roadAddress;
7270
this.lotNumberAddress = lotNumberAddress;
7371
this.coordinates = new Coordinates(latitude, longitude);
74-
this.createdAt = LocalDateTime.now();
7572
}
7673
}

0 commit comments

Comments
 (0)