ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JPA Auditing
    카테고리 없음 2024. 6. 27. 12:28
    JPA Auditing
    • JPA를 사용하는 애플리케이션에서 entity 클래스의 생성 및 수정 시점에 대한 자동 기록 기능을 제공하는 방법
    • 이를 통해 데이터베이스에 저장된 entity 객체의 생성 시간, 마지막 수정 시간, 생성자, 수정자 등을 자동으로 기록할 수 있음
    • 자동으로 데이터 변경 이력을 관리할 수 있어 편리함

     

    JPA Annotation

     

    @MappedSuperclass

    • 공통 필드 매핑 정보를 여러 엔티티에서 공유할 수 있도록 하기 위해 사용되는 어노테이션
    • @MappedSuperclass가 선언된 클래스는 실제 엔티티가 아니며 데이터베이스 테이블과 직접적으로 매핑되지 않음
    • 대신 이 클래스를 상속받는 엔티티 클래스에 매핑 정보가 전달됨
    • 여러 엔티티에 공통적으로 적용되는 필드 (ex. 생성 시간, 수정 시간)를 정의할 때 사용됨
      • 예시 코드
    import lombok.Getter;
    import org.springframework.data.annotation.CreatedDate;
    import org.springframework.data.annotation.LastModifiedDate;
    import org.springframework.data.jpa.domain.support.AuditingEntityListener;
    
    import javax.persistence.Column;
    import javax.persistence.EntityListeners;
    import javax.persistence.MappedSuperclass;
    import java.time.LocalDateTime;
    
    @Getter
    @MappedSuperclass
    @EntityListeners(AuditingEntityListener.class)
    public class BaseTimeEntity {
    
        @CreatedDate
        @Column(updatable = false)
        private LocalDateTime createdDate;
    
        @LastModifiedDate
        private LocalDateTime modifiedDate;
    }

     

    @EntityListeners

    • 해당 클래스에 auditing 기능을 포함
    • 엔티티의 라이프사이클 이벤트(ex. 엔티티 생성/업데이트)를 리스닝하는 리스너 클래스를 지정하는 어노테이션
    • 엔티티에 대한 라이프사이클 이벤트를 처리하여 특정 로직을 실행하거나 데이터를 자동으로 설정할 때 사용
    • 엔티티의 변화를 감지하고 데이블의 데이터를 조작함

     

    @CreatedDate

    • 엔티티가 처음 생성될 때의 날짜와 시간을 자동으로 설정하는 어노테이션
    • @CreatedDate가 적용된 필드는 엔티티가 처음 저장될 때 자동으로 현재 날짜와 시간으로 설정됨

     

    @LastModifiedDate

    • 엔티티가 마지막으로 수정될 때의 날짜와 시간을 자동으로 설정하는 어노테이션
    • @LastModifiedDate가 적용된 필드는 엔티티가 저장될 때마다 자동으로 현재 날짜와 시간으로 업데이트됨
Designed by Tistory.