[SpringBoot] JPA Auditing
JPA Auditing :: 언제 만들어졌는지, 수정되었는지에 관한 정보는 중요하기 때문에 보통 Entity에는 생성시간, 수정시간 필드를 포함합니다. 그런데 모든 Entity에 생성시간, 수정시간 필드를 일일이 넣어서 생성하는 것은 비효율적이라고 판단하고 이를 해결하기 위한 방안으로 JPA Auditing 기능을 만들었습니다.
@EntityListeners(AuditingEntityListener.class)
: Entity를 데이터베이스에 적용하기 전, 이후에 커스텀 콜백을 요청할 수 있는 어노테이션입니다. Parameter로 커스텀 콜백을 요청할 클래스를 지정해주면 됩니다. JPA에서 제공하는 AuditingEntityListener.class를 인자로 넘기면 Auditing 기능을 수행합니다.
@MappedSuperclass
: JPA Entity 클래스들이 해당 추상 클래스(BaseTimeEntity.java)를 상속할 경우 createDate, modifiedDate를 컬럼으로 인식한다.
영속성 컨텍스트에 저장 후 BaseTimeEntity클래스의 Auditing 기능으로 인해서 트랜잭션 커밋 시점에 플러시가 호출할 때 Hibernate가 따로 시간 필드를 Entity에 추가하지 않아도, 자동으로 시간값을 채워주는 것을 확인할 수 있습니다.
@EnableJpaAuditing
: main클래스에 이 어노테이션을 적용하여 JPA Auditing을 활성화해야한다.
@CreatedDate
: Entity가 생성되어 저장될 때 시간이 자동 저장된다.
@LastModifiedDate
: 조회한 Entity의 값을 변경할 때 시간이 자동 저장된다.
- 참고
https://webcoding-start.tistory.com/53
스프링부트와 AWS로 혼자 구현하는 웹서비스