프로그래밍/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"));
    }
}