본문 바로가기
💻 하나씩 차곡차곡/Back-end

[Spring/JPA] Auditing 기능이란? (정의, 사용법, 사용하는 이유 등)

by 뚜루리 2025. 4. 18.
728x90
320x100

 

Auditing 기능은 Spring Data JPA에서 누가 언제 어떤 작업을 했는지를 자동으로 기록해주는 기능.

(즉, 어떤 사람이 게시글을 생성하거나 수정했을 때, 그 생성 일시, 수정 일시, 작성자, 수정자 같은 정보들을 자동으로 남겨주는 기능)

 


왜 필요한가?

  • 기록을 남기기 위해: 누가 어떤 데이터를 바꿨는지 추적 가능해야 함.
  • 디버깅과 보안 감사: 이상한 데이터 변경이 있으면 누가 했는지 추적 가능.
  • 변경 이력 관리: 데이터를 수정하거나 삭제했을 때, 언제 어떻게 바뀌었는지 기록 필요.

대표적으로 기록하는 필드

  • createdAt (언제 생성되었는지)
  • createdBy(누가 생성했는지)
  • updatedAt(언제 마지막으로 수정되었는지)
  • updatedBy(누가 마지막으로 수정했는지)

적용방법

1. 의존성 추가

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

*** Auditing 기능은 Spring Data JPA가 제공하는 부가기능 중 하나라서, spring-boot-starter-data-jpa 의존성이 있어야 제대로 동작!

 

2. 엔티티에 어노테이션 사용

@Entity
@EntityListeners(AuditingEntityListener.class)
public class Post {

    @Id
    @GeneratedValue
    private Long id;

    private String content;

    @CreatedDate
    private LocalDateTime createdAt;

    @LastModifiedDate
    private LocalDateTime updatedAt;

    @CreatedBy
    private String createdBy;

    @LastModifiedBy
    private String updatedBy;
}
  • 클래스 상단 : @EntityListeners(AuditingEntityListener.class)
  • 각 컬럼 : @CreatedDate, @LastModifiedDate, @CreatedBy, @LastModifiedBy

 

3. 설정 클래스에서 활성화

@Configuration
@EnableJpaAuditing
public class JpaConfig {
}

*** 처음엔 당연히 없으니 생성해주면 됨

 

 

설정파일(클래스) 아무 내용도 없이 어노테이션만 붙었는데 기능이 된다고?

  • Spring의 자동 구성(Auto Configuration) + 내부 메타프로그래밍 매직 덕분인데 @EnableJpaAuditing 이 내부적으로 필요한 설정을 자동 import 함. 
  • @EntityListeners + @CreatedDate 등의 어노테이션을 보고 감지하고 처리하는 코드가 이미 존재하고 Spring Boot가 spring-boot-starter-data-jpa 를 통해 기본 JPA 설정을 자동 구성함.
  • Spring Boot + Spring Data JPA는 이미 필요한 로직을 다 구현해놨고, 우리는 단지 그 기능을 '켜기만(@EnableJpaAuditing)' 하면 되는 구조
728x90
320x100