@CreationTimestamp, @UpdateTimestamp

2022. 10. 4. 00:40JPA 기초

org.hibernate.annotations

Hibernate는 엔티티 객체를 대상으로 INSERT, UPDATE 쿼리가 발생할 때,
현재 시간을 자동으로 저장해주는 어노테이션을 제공한다. 

@CreationTimestamp

INSERT 쿼리를 날릴 때, 현재 시간을 값으로 채운 뒤 쿼리를 생성하게 된다. 
따로 생성 시간을 관리하는 수고를 덜어준다.

@UpdateTimestamp

UPDATE 쿼리를 날릴 때마다 현재 시간을 값으로 채운 뒤 쿼리를 생성한다.
변경 사항이 발생할 때마다 마지막 변경 시간으로 자동 변경되므로 업데이트 할 경우 요긴하게 사용할 수 있다.

 

용례

@Entity
@Getter
@Builder
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id")
    private Long id;

    @CreationTimestamp // INSERT 시 자동으로 값이 채워진다.
    private Timestamp timestamp;

    @Column(name = "updated_at")
    @UpdateTimestamp // UPDATE 시 자동으로 값을 채워준다.
    private LocalDateTime updatedAt = LocalDateTime.now();
}

DB에는 자동으로 현재 시간이 저장된다.

참고로 @CreationTimestamp, @UpdateTimestamp 두 어노테이션이 지원하는 데이터 타입은

시간과 관련된 타입은 거의 다 제공하는 듯 하다!