-
[Spring] AuditingSpring 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) 옵션을 사용하면 된다.'Spring' 카테고리의 다른 글
[Spring] 한 페이지에 페이징 정보가 둘 이상일 경우 (0) 2021.12.31 [Spring] 페이징과 정렬 (0) 2021.12.31 [Spring] EntityGraph (0) 2021.12.29 [Spring] 벌크성 수정 쿼리 (0) 2021.12.28 [Spring] spring data jpa 페이징과 정렬 (0) 2021.12.25