본문 바로가기
개념정복💫/스프링 Spring 정복

@EntityListeners(AuditingEntityListener.class)란?

by 옹쑥이 2025. 2. 22.

Spring Data JPA에서 자동으로 날짜/시간을 기록하는 기능(@CreatedDate, @LastModifiedDate 등)을 사용하려면,
Spring이 해당 엔티티의 생성/수정 이벤트를 감지할 수 있도록 Auditing 기능을 활성화해야 합니다.
이때 필요한 설정이 바로 @EntityListeners(AuditingEntityListener.class)입니다.


1. 왜 필요한가?

Spring Data JPA의 Auditing 기능(@CreatedDate, @LastModifiedDate)은
엔티티가 언제 생성되었는지, 언제 수정되었는지를 자동으로 기록하는 기능입니다.

 

하지만 JPA에서는 엔티티의 변경을 자동으로 감지하지 않기 때문에,
JPA의 이벤트 리스너(@EntityListeners)를 등록해야 Auditing 기능이 제대로 동작합니다.


2. 사용 방법

① @EnableJpaAuditing 설정하기

@EnableJpaAuditing은 Spring Data JPA의 Auditing 기능을 활성화하는 역할을 합니다.
일반적으로 @SpringBootApplication이 있는 메인 클래스나 별도 @Configuration 클래스에서 설정합니다.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@SpringBootApplication
@EnableJpaAuditing  // 🟢 Auditing 기능 활성화
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

② 엔티티에 @EntityListeners(AuditingEntityListener.class) 추가하기

각 엔티티 클래스에서 Auditing 기능을 적용하려면,
엔티티 변경 이벤트를 감지하는 리스너(AuditingEntityListener)를 등록해야 합니다.

import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.*;
import java.time.LocalDateTime;

@Entity
@EntityListeners(AuditingEntityListener.class)  // 🟢 Auditing 이벤트 감지 리스너 추가
public class Post {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @CreatedDate  // 🟢 엔티티가 처음 생성될 때 자동으로 날짜 기록
    private LocalDateTime createdDate;

    @LastModifiedDate  // 🟢 엔티티가 수정될 때 자동으로 날짜 갱신
    private LocalDateTime lastModifiedDate;

}

3. 정리

설정 역할 필수 여부
@EnableJpaAuditing Spring Data JPA의 Auditing 기능 활성화 ✅ 필수
@EntityListeners(AuditingEntityListener.class) 해당 엔티티의 변경을 감지하여 자동으로 날짜 기록 ✅ 필수
@CreatedDate 엔티티가 처음 생성될 때 날짜 저장 선택
@LastModifiedDate 엔티티가 수정될 때 날짜 업데이트 선택

 

  • @EnableJpaAuditing → 스프링 전체에서 Auditing 기능을 활성화
  • @EntityListeners(AuditingEntityListener.class) → 각 엔티티에서 생성/수정 이벤트 감지
  • @CreatedDate, @LastModifiedDate → 날짜를 자동 기록하는 필드 지정