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)란?
'개념정복💫 > 스프링 Spring 정복' 카테고리의 다른 글
JPA 일대일(OneToOne) 관계 매핑 (0) | 2025.02.23 |
---|---|
즉시 로딩(EAGER)과 지연 로딩(LAZY), 언제 어떤 전략을 써야 할까? (1) | 2025.02.23 |
JPA 페치 타입: 즉시 로딩(EAGER)과 지연 로딩(LAZY) (0) | 2025.02.23 |
@EntityListeners(AuditingEntityListener.class)란? (4) | 2025.02.22 |
Lombok 주요 어노테이션 정리 (0) | 2025.02.21 |