엔티티를 생성, 변경할 때 변경한 사람과 시간을 추적하고 싶을 때 다음 과정을 따라하면 된다
1. 스프링 부트 설정 클래스(application.class)에 @EnableJpaAuditing 적용하기
2. 사용하려는 엔티티에 @EntityListeners(AuditingEntityListener.class)를 적용한다
@MappedSuperclass도 적용한다
스프링 데이터 Auditing 적용 (생성날짜, 수정날짜)
package study.datajpa.entity;
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
@Getter
public class BaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
}
실무에서 수정시간, 생성시간을 대부분 필요하지만, 수정자와 등록자는 필요 없을 수 있어서
따로 클래스를 만든 후 BaseEntity를 상속하는 방법으로 진행한다
public class BaseEntity extends BaseTimeEntity {
@CreatedBy
@Column(updatable = false)
private String createdBy;
@LastModifiedBy
private String lastModifiedBy;
}
등록자, 수정자를 처리해주는 AuditorAware 스프링 빈을 등록한다.
실무에서는 세션 정보나, 스프링 시큐리티 로그인 정보에서 ID를 받는다
@Bean
public AuditorAware<String> auditorProvider() {
return () -> Optional.of(UUID.randomUUID().toString());
}
'Spring > Spring Data JPA' 카테고리의 다른 글
[스프링 데이터 JPA] 네이티브 쿼리 (0) | 2022.03.20 |
---|---|
[스프링 데이터 JPA] 웹 확장(도메인 클래스 컨버터,페이징과 정렬) (0) | 2022.03.20 |
[스프링 데이터 JPA] @EntityGraph (0) | 2022.03.20 |
[스프링 데이터 JPA] 벌크 연산, 스냅샷 (0) | 2022.03.19 |
[스프링 데이터 JPA] 페이징과 정렬 (0) | 2022.03.19 |