@Getter
@MappedSuperclass
public class JpaBaseEntity {
@Column(updatable = false)
private LocalDateTime createTime;
private LocalDateTime updateTime;
@PrePersist
public void prePersist() {
this.createTime = LocalDateTime.now();
this.updateTime = LocalDateTime.now();
}
@PreUpdate
public void preUpdate() {
this.updateTime = LocalDateTime.now();
}
}
@PrePersist, @PostPersist, @PreUpdate, @PostUpdate@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createTime;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
@CreatedBy
@Column(updatable = false)
private String createdBy;
@LastModifiedBy
private String lastModifiedBy;
}
main() 실행 함수가 있는 스프링 부트 설정 클래스에 @EnableJpaAuditing 를 적용해야 한다.
Entity 에서 상속을 통해 사용할 수 있다.
사용 어노테이션
@CreatedDate, @LastModifiedDate, @CreatedBy, @LastModifiedBy등록자, 수정자를 처리해주는 AuditorAware 를 스프링 빈으로 등록해야 한다.
@Bean
public AuditorAware<String> auditorProvider() {
return () -> Optional.of(UUID.randomUUID().toString());
}