Hibernate에서는 엔티티 객체에 대해 INSERT
, UPDATE
등의 쿼리가 발생할 때, 현재 시간을 자동으로 저장해주는 @CreationTimestamp
와 @UpdateTimestamp
어노테이션을 제공한다.
@CreationTimeStamp
는 INSERT
쿼리가 발생할 때, 현재 시간을 값으로 채워서 쿼리를 생성한다. @InsertTimeStamp
어노테이션을 사용하면 데이터가 생성된 시점에 대한 관리하는 수고스러움을 덜 수 있다.
@UpdateTimestamp
는 UPDATE
쿼리가 발생할 때, 현재 시간을 값으로 채워서 쿼리를 생성한다. @UpdateTimestamp
어노테이션을 사용하면 수정이 발생할 때마다 마지막 수정시간을 업데이트 해주어야 하는 데이터에 유용하게 활용될 수 있다.
예시로 사용한 Post
객체에는 updatedAt
필드가 있다. 이 필드는, 게시글의 수정이 발생할 때 마다 매번 업데이트를 해주어야 한다. @UpdateTimestamp
어노테이션은 이러한 경우 유용하게 활용될 수 있다.
@Entity
@Getter
@Builder
public class Post {
@Id
@GeneratedValue
@Column(name = "user_id")
private Long id;
@Email
private String text;
@CreationTimestamp // INSERT 시 자동으로 값을 채워줌
@Column(name = "created_at")
private LocalDateTime createdAt = LocalDateTime.now();
@Column(name = "updated_at")
@UpdateTimestamp // UPDATE 시 자동으로 값을 채워줌
private LocalDateTime updatedAt = LocalDateTime.now();
}