본문 바로가기
Project/MangoPlate Clone

JPA Auditing 설정

by 혀눅짱 2023. 2. 24.

실무프로젝트를 하면 거의 무조건 모든 테이블에 등록일자,수정일자, 등록자,수정자 컬럼은 공통적으로 포함이되어있다.

(잘못된 데이터가 언제 누가 수정했는지 추적하기도 쉽고..)

이번 토이프로젝트에서는 굳이 크게 필요가없어서 사실 안하려고했는데 이왕 하는김에 인강들으면서 배운거 최대한 써먹으려고 적용을 해보았다. (등록일자,수정일자만)

먼저 springBootApplication 클래스 선언부 위에

@EnableJpaAuditing

 어노테이션을 추가한다.

 

그리고 모든 엔티티에 해당컬럼 두개를 추가할 꺼기 때문에 

따로 BaseEntity로 클래스 생성후 다른엔티티들이 상속받게 해놓았다.

 

BaseEntity

@MappedSuperclass
@NoArgsConstructor
@EntityListeners(AuditingEntityListener.class)
@Getter
public class BaseEntity {

    @CreatedDate
    private LocalDateTime regDt;

    @LastModifiedDate
    private LocalDateTime modDt;
}

 

어노테이션 설명 참조

@MappedSuperclass JPA Entity 클래스들이 해당 추상 클래스를 상속할 경우 createDate, modifiedDate를 컬럼으로 인식
@EntityListeners(AuditingEntityListener.class 해당 클래스에 Auditing 기능을 포함
@CreatedDate Entity가 생성되어 저장될 때 시간이 자동 저장
@LastModifiedDate 조회한 Entity의 값을 변경할 때 시간이 자동 저장

 

각 테이블과 매핑되는 Entity 클래스에서 BaseEntity를 상속받고 해당 엔티티가 저장되거나 변경될시 자동으로 해당컬럼들의 값이 세팅된다