Java

[Java Spring] JPA Auditing

씬프 2021. 4. 10. 14:01
반응형

JAVA ORM 표준 JPA를 활용해 RDBS (관계형 데이터베이스)에 매핑할 때

공통적으로 가지는 필드나 컬럼이 존재한다.

ex) 생성일자, 수정일자, 식별자

이 때 중복되는 코드가 많아지는데, JPA가 Audit 기능을 제공해 공통적인 컬럼들을 관리하도록 한다.


 

Gradle 빌드 의존성에 spring-boot-starter-data-jpa만 추가하면 사용가능하다.

 


 

도메인 패키지에 공통으로 사용되는 컬럼을 정의한 클래스를 생성한다.

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseTimeEntity {

    @CreatedDate
    private LocalDateTime createdDate;

    @LastModifiedDate
    private LocalDateTime modifiedDate;
}

그리고 @MappedSuperclass 어노테이션을 통해 해당 클래스를 상속받는 클래스에게 전달하도록 한다.
BaseTimeEntity를 상속받은 엔티티 클래스는 createdDatemodifiedDate를 컬럼으로 갖게 된다.

@EntityListeners(AuditingEntityListener.class) 어노테이션은 해당 클래스에 Audit 기능을 포함시킨다.

@CreatedDate은 엔티티가 생성되어 저장될 때 시간이 자동 저장되도록 한다.

@LastModifiedDate은 조회한 엔티티의 값을 변경할 때 시간이 자동 저장되도록 한다.

 


메인 메서드에 @EnableJpaAuditing을 추가하면 Audit 기능을 사용할 수 있다.