====== 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 의 구현체 객체 생성 } }