[Spring] JPA 생성, 변경 일시 자동생성 및 format 변경
- 코딩/Spring
- 2022. 11. 11.
[Spring] JPA 생성, 변경 일시 자동생성 및 format 변경 알아보기
자동생성 방법
1. JPA 이벤트를 사용하여 자동 생성
@EntityListeners(AuditingEntityListener.class)
@Entity
public class Member {
...
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime modifiedDate;
...
}
위와 같이 @CreatedDate와 @LastModifiedDate 어노테이션을 사용하여 엔티티 저장 및 수정 시각을 처리하도록 설정하면, createdDate와 modifiedDate 필드에 자동으로 값이 채워지게 됩니다.
2. JPA EntityListener를 사용하여 자동 생성
@EntityListeners(MyEntityListener.class)
@Entity
public class Member {
...
private LocalDateTime createdDate;
private LocalDateTime modifiedDate;
...
}
public class MyEntityListener {
@PrePersist
public void setCreatedDate(Object entity) {
if (entity instanceof Member) {
Member member = (Member) entity;
member.setCreatedDate(LocalDateTime.now());
member.setModifiedDate(LocalDateTime.now());
}
}
@PreUpdate
public void setModifiedDate(Object entity) {
if (entity instanceof Member) {
Member member = (Member) entity;
member.setModifiedDate(LocalDateTime.now());
}
}
}
위와 같이 @PrePersist와 @PreUpdate 어노테이션을 사용하여 엔티티 저장 및 수정 시각을 처리하도록 설정하면, createdDate와 modifiedDate 필드에 자동으로 값이 채워지게 됩니다.
format 변경방법
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {
@ApiModelProperty(value = "생성일시")
private String createdDate;
@ApiModelProperty(value = "최종변경일시")
private String modifiedDate;
@PrePersist
public void onPrePersist() {
this.createdDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
this.modifiedDate = this.createdDate;
}
@PreUpdate
public void onPreUpdate() {
this.modifiedDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
}
}
'코딩 > Spring' 카테고리의 다른 글
[Spring] LocalDateTime.now() 테스트하기 (0) | 2022.11.14 |
---|---|
[Spring] Entity vs DTO vs VO (0) | 2022.11.11 |
[Spring] 스프링 @Transactional 작동 안할때 (0) | 2022.11.10 |
[Spring] Logging Framework 와 Logback 비교 (0) | 2022.11.10 |
[Spring] Entity를 Dto로 변환(MapStruct) (0) | 2022.11.10 |