본문 바로가기

Back-End/JPA

Spring Data JPA : Auditing

애플리케이션에서 데이터를 관리하다 보면, 누가, 언제 데이터를 생성하고 수정했는지를 추적하는 기능이 필요할 때가 많다.
Spring Data JPA는 이를 간편하게 처리할 수 있도록 Auditing 기능을 제공한다.

1. Auditing이란?

Auditing은 엔티티에 대해 데이터 변경 이력을 기록하는 기능이다. Spring Data JPA는 이를 자동화하여 개발자가 별도의 로직을 작성하지 않고도 엔티티의 생성일자, 수정일자, 생성자, 수정자 등을 관리할 수 있도록 도와준다.

2. Auditing 설정

활성화 설정

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

3. Auditing 사용 방법

3.1 Auditable 엔티티 필드

Auditing을 적용할 엔티티 클래스에서 아래의 어노테이션을 사용하여 필드를 정의.

주요 어노테이션

  • @CreatedDate: 엔티티가 생성된 시간을 자동으로 기록.
  • @LastModifiedDate: 엔티티가 마지막으로 수정된 시간을 자동으로 기록.
  • @CreatedBy: 엔티티를 생성한 사용자를 기록.
  • @LastModifiedBy: 엔티티를 마지막으로 수정한 사용자를 기록.

3.2 엔티티 클래스

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

    @CreatedDate
    @Column(updatable = false)
    private LocalDateTime createdDate;

    @LastModifiedDate
    private LocalDateTime lastModifiedDate;

    @CreatedBy
    @Column(updatable = false)
    private String createdBy;

    @LastModifiedBy
    private String lastModifiedBy;
}

3.3 엔티티 상속

공통적으로 Auditing이 필요한 엔티티는 위의 BaseEntity를 상속받아 사용한다.