데이터 저장할 때 '생성된 시각' '마지막으로 수정된 시각'을 entity에 저장하고 싶을때 JPA에서는 @CreatedDate와 @LastModifiedDate 어노테이션을 이용하여 자동 저장할 수 있다.
프로젝트 도중에 createdDate와 lastModifiedDate가 계속 null 저장되어 한참을 애먹은 경험이 있는데 이는 내가 main 메소드에 @EnableJpaAuditing 어노테이션을 빼먹어서 계속 null이 저장되었던 것 이다. 그렇다면 @EnableJpaAuditing의 기능은 무엇일까?
어플리케이션의 main 메소드가 있는 클래스에 적용하며 JPA Auditing(감시, 감사) 기능을 활성하하기 위한 어노테이션이다. 이 어노테이션을 적용하면 DB가 생성, 수정, 삭제될 때 언제 누가 했는지를 자동으로 관리할 수 있게 해준다.
데이터를 생성 수정한 날짜를 자동으로 저장하기 위해 BaseTimeEntity 클래스를 만들어 생성, 수정 날짜를 기록할 Entity는 이 클래스를 상속받아 사용하면 효율적이라고 한다.
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime modifiedDate;
}
-reference-