스프링 데이터 JPA 12. Auditing - KwangtaekJung/inflearn-spring-data-jpa-keesun GitHub Wiki

스프링 데이터 JPA: Auditing

스프링 데이터 JPA의 Auditing

    @CreatedDate
    private Date created;

    @LastModifiedDate
    private Date updated;

    @CreatedBy
    @ManyToOne
    private Account createdBy;

    @LastModifiedBy
    @ManyToOne
    private Account updatedBy;

엔티티의 변경 시점에 언제, 누가 변경했는지에 대한 정보를 기록하는 기능.

아쉽지만 이 기능은 스프링 부트가 자동 설정 해주지 않습니다.

  • 메인 애플리케이션 위에 @EnableJpaAuditing 추가
  • 엔티티 클래스 위에 @EntityListeners(AuditingEntityListener.class) 추가
  • AuditorAware 구현체 만들기
  • @EnableJpaAuditing에 AuditorAware 빈 이름 설정하기.
@SpringBootApplication
@EnableJpaRepositories(
		queryLookupStrategy = QueryLookupStrategy.Key.CREATE_IF_NOT_FOUND,
		repositoryImplementationPostfix = "Impl")
@EnableJpaAuditing(auditorAwareRef = "accountAuditAware")
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}
@Service
public class AccountAuditAware implements AuditorAware<Account> {

    @Override
    public Optional<Account> getCurrentAuditor() {
        System.out.println("looking for current user");
        // 여기에 user 정보를 담아주는 코드를 추가하면 된다.
        // Spring Security를 사용한다면 거기서 현재 user 정보를 읽어올 수도 있다.
        return Optional.empty();
    }
}

JPA의 라이프 사이클 이벤트

Spring Data JPA이 Audit 기능을 이용하지 않고 좀 더 일반적을 방법으로 user 정보를 담는 방법임.

⚠️ **GitHub.com Fallback** ⚠️