본문 바로가기
프로그래밍/TIL

[TIL] JpaAuditing 설정하고 사용하기

by 코딩중독 2024. 2. 28.

목차

    스프링부트 프로젝트에서 JpaAuditing 설정과 사용

     

    JPA  Auditing 이란?

    Spring Data JPA를 사용하여 Entity의 생성일과 수정일을 자동으로 추적하여 업데이트해준다.

    Database Entity의 변경이력을 좀 더 쉽게 관리할 수 있다.

     

     

    JPA 의존성 추가

    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

     

     

    JPA Auditing 활성화

    @EnableJpaAuditing 어노테이션을 메인 클래스 또는 별도의 설정 클래스에 추가한다.

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

     

    또는 별도의 설정파일을 만들어서 사용한다.

     

    @EnableJpaAuditing
    @Configuration
    public class AuditingConfig {
    }

     

    JPA Auditing BaseEntity 생성

    @MappedSuperclass
    @EntityListeners(AuditingEntityListener.class)
    public abstract class BaseTimeEntity {
    
        @CreatedDate
        @Column(nullable = false, updatable = false)
        protected LocalDateTime createdAt;
    
        @LastModifiedDate
        @Column(nullable = false)
        protected LocalDateTime lastModifiedAt;
    
    }

     

    @CreatedDate : 생성일 관리

    @LastModifiedDate : 수정일 관리

    @MappedSuperclass : 해당 클래스가 엔티티가 아닌 공통 기능을 제공하는 부모클래스임을 명시

    @EntityListeners(AuditingEntityListener.clss) : JPA auditing을 위한 리스너를 지정

     

    @CreatedDate 어노테이션은 updatable = false를 추가해서 변경을 방지한다.

     

    Entity에서의 활용

    JPA Auditing이 설정된 BaseTimeEntity를 상속받아 사용한다.

    @Entity
    @AllArgsConstructor
    @NoArgsConstructor
    public class MyEntity extends BaseEntity {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
    
    }