개념정복💫/스프링 Spring 정복
JPA 엔티티 날짜/시간 자동 설정
옹쑥이
2025. 2. 22. 00:02
JPA에서는 엔티티가 생성되거나 수정될 때 자동으로 날짜/시간을 기록할 수 있습니다.
Spring Data JPA의 @CreatedDate, Hibernate 구현체의 @CreationTimestamp가 대표적이다.
1. @CreatedDate
- 특징: Spring Data JPA에서 제공, 엔티티가 처음 저장될 때의 시간을 자동으로 기록
- 설정 조건:
- @EnableJpaAuditing 활성화 (예: @SpringBootApplication 클래스나 별도 설정 클래스)
- 엔티티 클래스에 @EntityListeners(AuditingEntityListener.class) 추가
- 해당 필드에 @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)란?