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

JPA 엔티티 날짜/시간 자동 설정

by 옹쑥이 2025. 2. 22.

JPA에서는 엔티티가 생성되거나 수정될 때 자동으로 날짜/시간을 기록할 수 있습니다.
Spring Data JPA의 @CreatedDate, Hibernate 구현체의 @CreationTimestamp가 대표적이다.


1. @CreatedDate

  • 특징: Spring Data JPA에서 제공, 엔티티가 처음 저장될 때의 시간을 자동으로 기록
  • 설정 조건:
    1. @EnableJpaAuditing 활성화 (예: @SpringBootApplication 클래스나 별도 설정 클래스)
    2. 엔티티 클래스에 @EntityListeners(AuditingEntityListener.class) 추가
    3. 해당 필드에 @CreatedDate 적용
  • 예시 코드:
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Post {

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

    @CreatedDate
    private LocalDateTime createdDate;

    // ...
}
  • 장점:
    • 스프링 데이터 JPA 표준 방식을 사용 -> 일관된 설정 가능

2. @CreationTimestamp

  • 특징: Hibernate 구현체에 의존적, INSERT 시점의 Timestamp를 DB에서 자동으로 기록
  • 예시 코드:
@Entity
public class Comment {

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

    @CreationTimestamp
    private LocalDateTime createdAt;

    // ...
}
  • 주의점:
    • 순수 JPA 표준이 아니라 Hibernate 고유 기능이라, 다른 JPA 구현체 사용 시 호환성 문제 발생 가능

 

엔티티에 자동으로 생성 일자를 저장하면, 등록일/수정일 등을 매번 수동으로 세팅할 필요가 없어 편리하다.
Spring Data JPA를 적극 쓰는 프로젝트라면 @CreatedDate + @EnableJpaAuditing 조합 추천!

 

2025.02.21 - [개념정복💫/스프링 Spring 정복] - @EntityListeners(AuditingEntityListener.class)란?