1. Auditing 소개
- Spring Data는 엔티티의 생성자와 수정자, 그리고 생성 시간과 수정 시간을 자 동으로 추적할 수 있는 강력한 기능을 제공합니다
- 이 기능을 통해 누가 언제 데이터를 변경했는지 투명하게 관리할 수 있어요
- Auditing 기능을 사용하려면 엔티티 클래스에 특정 애노테이션을 추가하거나 인터페이스를 구현하면 됩니다
- 추가로 애플리케이션 설정에서 감사 기능을 활성화하는 과정이 필요합니다
2. 순수 JPA 사용하기
- 먼저 Spring Data의 기능 없이 순수 JPA만으로 엔티티의 생성 시간과 수정 시간을 기록하는 방법을 알아보겠습니다
- JPA에서는 엔티티의 생명주기에 관련된 이벤트를 처리할 수 있는 여러 콜백 어노테이션을 제공합니다
@PrePersist
: 엔티티가 저장되기 전에 호출되는 메서드를 지정@PostPersist
: 엔티티가 저장된 후에 호출되는 메서드를 지정@PreUpdate
: 엔티티가 업데이트되기 전에 호출되는 메서드를 지정@PostUpdate
: 엔티티가 업데이트된 후에 호출되는 메서드를 지정
2.1 예시
@MappedSuperclass
@Getter
public class JpaBaseEntity {
@Column(updatable = false)
private LocalDateTime createdDate;
private LocalDateTime updatedDate;
@PrePersist
public void prePersist() {
LocalDateTime now = LocalDateTime.now();
createdDate = now;
updatedDate = now;
}
@PreUpdate
public void preUpdate() {
updatedDate = LocalDateTime.now();
}
}
- 위 클래스는 생성 시간과 수정 시간을 관리하는 기본 엔티티입니다
@PrePersist
를 통해 엔티티가 처음 저장될 때 생성 시간과 수정 시간을 현재 시간으로 설정합니다@PreUpdate
를 통해 엔티티가 업데이트될 때마다 수정 시간을 현재 시간으로 갱신합니다- 시간 추적이 필요한 클래스는 간단히 이 클래스를 상속받아 사용할 수 있습니다
public class Member extends JpaBaseEntity {
// 멤버 클래스의 다른 필드와 메서드들...
}