Audit은 사전적 의미로 감시하다, 심사하다 등의 의미를 가지고 있습니다.
Spring Data JPA에서는 Auditing이라는 기능을 제공하는데, 이를 사용하여 엔티티가 생성되고 변경되는 그 시점을 감지하여 생성시각, 수정시각, 생성한 사람, 수정한 사람 등의 정보를 저장할 수 있습니다.
@Configuration
@EnableJpaAuditing
public class JpaAuditingConfiguration {
}
@EnableJpaAuditing
애노테이션을 붙여서 Auditing 활성화를 해줍니다.
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class Example {
@CreationTimestamp
private ZonedDateTime createdAt;
@CreationTimestamp
private ZonedDateTime updatedAt;
}
JPA Entity 클래스들은 Example 클래스를 상속 받을 경우 createdAt과 updatedAt을 필드로 인식합니다.
예시
참고로 굳이 시간이 아니어도, 위 사진과 같이 여러 클래스에 공통 속성이 존재한다면 별개의 엔티티 클래스ex) BaseEntity
로 분리하여 상속받아 사용하면 많은 코드의 중복을 줄여줄 수 있어 하나의 좋은 방법이 될 수 있습니다.
Auditing을 적용할 엔티티 클래스에 @EntityListeners
애노테이션을 적용해야 합니다. 해당 애노테이션은 엔티티의 변화를 감지하여 엔티티와 매핑된 테이블의 데이터를 조작합니다.
@CreationTimestamp
애노테이션은 INSERT 쿼리가 발생할 때, 현재 시간을 값으로 채워 쿼리를 생성합니다.