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 → 날짜를 자동 기록하는 필드 지정
'개념정복💫 > 스프링 Spring 정복' 카테고리의 다른 글
JPA 일대일(OneToOne) 관계 매핑 (0) | 2025.02.23 |
---|---|
즉시 로딩(EAGER)과 지연 로딩(LAZY), 언제 어떤 전략을 써야 할까? (1) | 2025.02.23 |
JPA 페치 타입: 즉시 로딩(EAGER)과 지연 로딩(LAZY) (0) | 2025.02.23 |
JPA 엔티티 날짜/시간 자동 설정 (0) | 2025.02.22 |
Lombok 주요 어노테이션 정리 (0) | 2025.02.21 |