
Spring Data JPA를 사용하면, 엔티티가 생성되거나 수정될 때 그 순간을 자동으로 기록할 수 있는 매우 유용한 기능인 Auditing을 활용할 수 있습니다. Auditing 기능을 사용하면, 방명록에 방문자가 자신이 방문한 날짜와 시간을 남기는 것처럼, 엔티티의 생성 시간과 마지막 수정 시간, 생성자와 수정자를 자동으로 기록할 수 있습니다.
Auditing을 적용하기 위한 몇 가지 단계는 다음과 같습니다:
@EnableJpaAuditing
@SpringBootApplication
public class Application {
}
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class TimeStamp {
@CreatedDate
private LocalDateTime createdAt;
@CreatedBy
@ManyToOne
private User createdBy;
@LastModifiedDate
private LocalDateTime modifiedAt;
@LastModifiedBy
@ManyToOne
private User modifiedBy;
}
@Service
public class UserAuditorAware implements AuditorAware<User> {
@Override
public Optional<User> getCurrentAuditor() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication == null || !authentication.isAuthenticated()) {
return Optional.empty();
}
return Optional.of(((UserDetailsImpl) authentication.getPrincipal()).getUser());
}
}
@EnableJpaAuditing(auditorAwareRef = "userAuditorAware")
@SpringBootApplication
public class Application {
}
// Entity 내 정의
@PrePersist
public void prePersist() {
super.updateModifiedAt();
super.updateCreatedAt();
}
@PreUpdate
public void PreUpdate() {
super.updateModifiedAt();
}