@CreationTimestamp
🕒 @CreationTimestamp
정의
@CreationTimestamp는 Hibernate에서 제공하는 애너테이션으로, 엔티티가 INSERT될 때 생성 시간을 자동으로 채워주는 기능이다.
생성 시각을 별도로 넣지 않아도 Hibernate가 자동으로 시간을 채워준다.
🧩 주요 특징
- Hibernate 전용 기능이다
- 엔티티가 처음 저장될 때 생성 시각을 자동으로 기록한다
- 별도의 Auditing 설정 없이 사용할 수 있다
- 애플리케이션 코드에서 직접 시간을 넣지 않아도 된다
- 생성 이후에는 보통 수정되지 않도록
updatable = false와 함께 사용한다
🛠 사용법
적용 예시
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.time.LocalDateTime;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@CreationTimestamp
@Column(updatable = false, nullable = false)
private LocalDateTime createdAt;
}
@CreatedDate와 비교
| 어노테이션 | 제공 프레임워크 | 생성 시점 | 설정 |
|---|---|---|---|
@CreatedDate |
Spring Data JPA | Auditing 계층에서 관리 | @EnableJpaAuditing 필요 |
@CreationTimestamp |
Hibernate | 엔티티 INSERT 시점 | 별도 Auditing 설정 불필요 |
⚠️ 장점과 단점
장점
- 애플리케이션 코드에서 시간을 직접 넣지 않아도 된다
- 생성 시각을 자동으로 저장할 수 있다
- 구현이 간단하다
단점
- JPA 표준이 아니라 Hibernate 전용 기능이다
- Hibernate에 종속된다
- Spring Data JPA Auditing 방식과 동작 계층이 다르므로 프로젝트 기준을 맞춰야 한다
📌 정리
@CreationTimestamp는 Hibernate의 생성 시각 자동 저장 애너테이션이다.@CreatedDate와 비슷하지만 동작 방식과 설정이 다르다.- 생성 시각 관리가 필요한 엔티티에서 간편하게 사용할 수 있다.
댓글남기기