엔티티를 생성, 변경할 때 변경한 사람과 시간을 추적하고 싶을 때 다음 과정을 따라하면 된다

 

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());
    }

+ Recent posts