ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] Auditing
    Spring 2021. 12. 30. 23:00

    서비스를 할 때 데이터의 등록일, 수정일을 모든 테이블에 넣어주는 것이 좋고,

    테이블에 따라 등록자와 수정자까지 넣어주면 좋다.

     

    스프링 데이터 JPA에서는 그 기능을 편히 사용할 수 있다.

     

     

    스프링 부트 설정 클래스에 적용

    @EnableJpaAuditing
    @SpringBootApplication
    public class DataJpaApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(DataJpaApplication.class, args);
    	}
    }

     

    시간파트 부모엔티티

    @EntityListeners(AuditingEntityListener.class)
    @MappedSuperclass
    @Getter
    public class BaseTimeEntity {
    
        @CreatedDate
        @Column(updatable = false)
        private LocalDateTime createdDate;
    
        @LastModifiedDate
        private LocalDateTime lastModifiedDate;
    }

    작성자파트 자식엔티티

    @EntityListeners(AuditingEntityListener.class)
    @MappedSuperclass
    @Getter
    public class BaseEntity extends BaseTimeEntity{
    
        @CreatedBy
        @Column(updatable = false)
        private String createdBy;
    
        @LastModifiedBy
        private String lastModifiedBy;
    }

    이 설정 이후 각 엔티티마다 필요한 설정값을 상속해주면 된다.

     


    참고 : 저장시점에 등록일, 등록자는 물론이고, 수정일, 수정자도 같은 데이터가 저장된다. 데이터가 중복저장되는 것 같지만, 이렇게 해두면 변경 컬럼만 확인해도 마지막에 업데이트한 유저를 확인 할 수 있으므로 유지보수 관점에서 편리하다. 이렇게 하지 않으면 변경 컬럼이 null 일 때 등록 컬럼을 또 찾아야 한다.
    참고로 저장시점에 저장데이터만 입력하고 싶으면 @EnableJpaAuditing(modifyOnCreate = false) 옵션을 사용하면 된다.

     

    출처 : 스프링 핵심 원리 - 기본편 - 인프런 | 학습 페이지 (inflearn.com)

    댓글

Designed by Tistory.