JPA Auditing은 Spring Data JPA에서 제공하는 기능 중 하나로, 엔티티의 변경 사항을 추적하는 데 사용된다. 엔티티가 생성되거나 수정되었을 때의 시간과, 생성 또는 수정한 사용자 정보를 자동으로 저장하는데 사용된다.
JPA Auditing을 사용하려면 먼저 엔티티 클래스에 @EntityListeners(AuditingEntityListener.class)
어노테이션을 추가해야 한다.
👉🏻 Spring Boot 2.2 이상의 버전에서는 @EntityListeners(AuditingEntityListener.class)
어노테이션을 생략할 수 있다. 다만, 이러한 방식은 모든 엔티티 클래스에서 Auditing 기능이 활성화되므로 필요한 엔티티에만 적용하려면 어노테이션을 명시해주는 것이 좋다.
생성 시간과 수정 시간을 저장할 필드에는 각각 @CreatedDate
와 @LastModifiedDate
어노테이션을, 생성자와 수정자를 저장할 필드에는 각각 @CreatedBy
와 @LastModifiedBy
어노테이션을 추가하면 된다.
@Entity
@EntityListeners(AuditingEntityListener.class)
public class MyEntity {
// ...
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
@CreatedBy
private String createdBy;
@LastModifiedBy
private String lastModifiedBy;
}
JPA Auditing를 사용하려면 스프링 부트 메인 클래스 또는 설정 클래스에 @EnableJpaAuditing
어노테이션을 추가해 JPA Auditing을 활성화해야한다.
@SpringBootApplication
@EnableJpaAuditing
public class Application {
// ...
}
JPA Auditing를 설정하면 엔티티가 생성되거나 수정될 때마다 스프링 데이터 JPA가 자동으로 생성 시간/수정 시간/생성자/수정자를 저장한다. 생성자와 수정자는 AuditorAware
인터페이스를 통해 얻을 수 있다.