
Auditing
JPA
@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();
}
}
public class Member extends JpaBaseEntity{}
Member m1 = new Member("user1", 10);
memberRepository.save(m1);
m1.setUsername("user2");
em.flush();
em.clear();
Member findMember = memberRepository.findById(m1.getId()).get();
System.out.println(findMember.getCreatedDate());
System.out.println(findMember.getUpdatedDate());
Spring Data JPA
@EnableJpaAuditing
@SpringBootApplication
public class DataJpaApplication {
public static void main(String[] args) {
SpringApplication.run(DataJpaApplication.class, args);
}
@Bean
public AuditorAware<String> auditorProvider() {
return () -> Optional.of(UUID.randomUUID().toString());
}
}
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
@Getter
public class BaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
@CreatedBy
@Column(updatable = false)
private String createdBy;
@LastModifiedBy
private String lastModifiedBy;
}
public class Member extends BaseEntity{}
Member m1 = new Member("user1", 10);
memberRepository.save(m1);
m1.setUsername("user2");
em.flush();
em.clear();
Member findMember = memberRepository.findById(m1.getId()).get();
System.out.println(findMember.getCreatedDate());
System.out.println(findMember.getLastModifiedDate());
System.out.println(findMember.getCreatedBy());
System.out.println(findMember.getLastModifiedBy());