프로그래밍/JPA
[JPA] Auditing으로 저장 할 생성/수정 시간 DateTimeFormatter로 포매팅하기
브랜치 미정
2023. 8. 21. 00:57
엔티티가 생성되고(CreatedDate), 변경되는 시점(LastModifiedDate)을 자동으로 감지하여 column으로 저장하기 위해
Auditing 클래스인 BaseTimeEntity 클래스를 만들었다.
아래처럼 @CreatedDate 와 @LastModifiedDate 를 사용하여 LocalDateTime을 그대로 받으면
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime modifyDate;
이런 형식으로 날짜, 시간이 받아진다
2023-08-19T16:23:47.960583
알아보기도 힘들고 밀리세컨드 단위가 필요없어서
년-월-일 시:분:초 형식으로 변경하기로 하였다.
형식을 본인이 받고싶은대로 변경하려면
@PrePersist ( 엔티티가 비영속 상태에서 영속 상태가 되는 시점 이전에 실행 )
@PreUpdate ( 영속 상태의 엔티티를 이용하여 데이터 업데이트를 수행하기 이전에 실행 )
함수에서 DateTimeFormatter를 이용하여 LocalDateTime을 포매팅 후 변수에 대입해준다
년-월-일 시:분:초 형식으로 받기 위해 "yyyy-MM-dd HH:mm:ss" 형식으로 변경하여 저장하도록 하였다.
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseTimeEntity {
@CreatedDate
private String createdDate;
@LastModifiedDate
private String modifiedDate;
@PrePersist
public void prePersist(){
this.createdDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.modifiedDate = this.createdDate;
}
@PreUpdate
public void preUpdate(){
this.modifiedDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
}