🕒 @CreationTimestamp

정의

@CreationTimestampHibernate에서 제공하는 애너테이션으로, 엔티티가 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와 비슷하지만 동작 방식과 설정이 다르다.
  • 생성 시각 관리가 필요한 엔티티에서 간편하게 사용할 수 있다.

연결문서

댓글남기기