JPA 강의를 보고 개인 프로젝트를 통해 직접 작성해 보면서 미흡했던 부분이 많았다. 테이블을 생성하고 데이터를 insert 하는 부분에서 생성 날짜와 수정 날짜는 공통적으로 모든 테이블에 포함되어 있다면 좋을 것 같았다.
하지만 각 클래스마다 LocalDateTime을 추가해 주는 것은 굉장히 번거로운 일이였다. 임베디드 타입을 통해 사용할 수도 있지만 자동으로 날짜 데이터 까지 추가해 줬으면 하는 바램이 있었다. 찾아본 결과 역시 존재했다.
Auditing
- 생성 시간 수정 시간을 자동으로 자동화 하는 전용 클래스 하나를 만들어 필요한 엔티티에 상속받도록 해주면 된다.
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseTimeEntity {
@CreatedDate
private LocalDateTime createTime;
@LastModifiedDate
private LocalDateTime updateTime;
}
- MappedSuperClass : BaseEntity 상속한 엔티티들은 BaseEntity에 있는 멤버 변수들을 모두 컬럼으로 인식하게 된다.
- EntityListeners(AuditingEntityListener.class) : Auditing 기능을 사용하여 자동으로 값을 매핑시키는 기능이다.
- CreatedDate / LastModifiedDate : 데이터가 생성, 수정되는 시점에 자동으로 매핑해주는 어노테이션
- @EnableJpaAuditing : SpringBootApplication에 추가해줘야 Auditing기능을 사용할 수 있다.