목차

Spring Data JPA Auditing

사용 가능한 Annotation

설정

매번 Entity Listener로 등록

Entity 클래스에 매번 리스너를 등록해서 사용할 수 있다.

@Entity
@EntityListeners(value = { AuditingEntityListener.class })

orm.xml 로 한 번에 등록

orm.xml에 전역 Entity Listener로 등록할 수 있다.

<persistence-unit-metadata>
  <persistence-unit-defaults>
    <entity-listeners>
      <entity-listener class="org.springframework.data.jpa.domain.support.AuditingEntityListener" />
    </entity-listeners>
  </persistence-unit-defaults>
</persistence-unit-metadata>

이 경우 gradle의 JPA Schema Generate가 NoClassDefFound 에러를 내며 올바로 작동하지 않았는데, 최상위 build.gradle의 buildScript dependencies에 해당 클래스를 가진 라이브러리를 넣어주면되었다.

Spring 설정

그리고서 @EnableJpaAuditing 를 해줘야 한다.

@CreatedBy / @LastModifiedBy 용 AuditorAware 인터페이스 구현

@Configuration
@EnableJpaAuditing
class Config {
 
  @Bean
  public AuditorAware<AuditableUser> auditorProvider() {
    return new AuditorAwareImpl(); // AuditorAware 의 구현체 객체 생성
  }
}