====== Spring Data JPA Auditing ======
* ''AuditingEntityListener'' 를 통해 Entity Persist 시에 시간 정보, 생성자 정보 등을 자동으로 넣을 수 있다.
===== 사용 가능한 Annotation =====
* ''@CreatedBy'', ''@LastModifiedBy'' : 엔티티를 생성/수정한 사용자 정보 자동 주입
* ''@CreatedDate'', ''@LastModifiedDate'' : 엔티티 생성/수정 시간 자동 주입
===== 설정 =====
* [[http://hantsy.blogspot.kr/2013/10/jpa-data-auditing.html|Forward Everyday: JPA Data Auditing]]
==== 매번 Entity Listener로 등록 ====
Entity 클래스에 매번 리스너를 등록해서 사용할 수 있다.
@Entity
@EntityListeners(value = { AuditingEntityListener.class })
==== orm.xml 로 한 번에 등록 ====
''orm.xml''에 전역 Entity Listener로 등록할 수 있다.
이 경우 gradle의 JPA Schema Generate가 ''NoClassDefFound'' 에러를 내며 올바로 작동하지 않았는데, 최상위 ''build.gradle''의 buildScript dependencies에 해당 클래스를 가진 라이브러리를 넣어주면되었다.
==== Spring 설정 ====
그리고서 ''@EnableJpaAuditing'' 를 해줘야 한다.
==== @CreatedBy / @LastModifiedBy 용 AuditorAware 인터페이스 구현 ====
* ''AuditorAware'' 인터페이스를 구현하여 현재 쓰레드의 사용자 정보를 자동으로 넘겨줄 수 있도록 해야 두 애노테이션을 사용할 수 있다.
* 이는, Web 계층이 도메인 계층에 침범하는 것이므로 권하지 않음. 시간 정보를 자동으로 넣는 수준에서만 사용 권장
@Configuration
@EnableJpaAuditing
class Config {
@Bean
public AuditorAware auditorProvider() {
return new AuditorAwareImpl(); // AuditorAware 의 구현체 객체 생성
}
}