사용자 도구

사이트 도구


java:jpa:springdatajpa:audit

Spring Data JPA Auditing

  • AuditingEntityListener 를 통해 Entity Persist 시에 시간 정보, 생성자 정보 등을 자동으로 넣을 수 있다.

사용 가능한 Annotation

  • @CreatedBy, @LastModifiedBy : 엔티티를 생성/수정한 사용자 정보 자동 주입
  • @CreatedDate, @LastModifiedDate : 엔티티 생성/수정 시간 자동 주입

설정

매번 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 인터페이스 구현

  • AuditorAware 인터페이스를 구현하여 현재 쓰레드의 사용자 정보를 자동으로 넘겨줄 수 있도록 해야 두 애노테이션을 사용할 수 있다.
  • 이는, Web 계층이 도메인 계층에 침범하는 것이므로 권하지 않음. 시간 정보를 자동으로 넣는 수준에서만 사용 권장
@Configuration
@EnableJpaAuditing
class Config {
 
  @Bean
  public AuditorAware<AuditableUser> auditorProvider() {
    return new AuditorAwareImpl(); // AuditorAware 의 구현체 객체 생성
  }
}
java/jpa/springdatajpa/audit.txt · 마지막으로 수정됨: 2019/11/13 13:59 저자 kwon37xi