JPA 현재 시간등록

요한·2025년 7월 3일

JPA

목록 보기
4/4

프로젝트하다 게시글 작성 시간을 DB에 넣어야할때가 왔다.
Hibernate에서 제공하는 방법이랑 builder에서 하드하게 넣는 방법을 설명 해드릴려고합니다!

어노테이션 사용

    @CreationTimestamp 
    private LocalDateTime created_at;
    
    @UpdateTimestamp
    private LocalDateTime update_at;

@CreationTimestamp

Hibernate에서 INSERT 쿼리가 실행될 때, 해당 필드에 현재 시각 (DB or 시스템 시간) 을 자동으로 넣어주는 기능이다.

✅ 시점

persist가 실행되면 그때 값을 넣어준다.

❗️ 주의사항

Update 된 시점에는 값을 새로 갱신 하지않는다.

@UpdateTimestamp

Hibernate에서 UPDATE 쿼리가 실행될 때, 해당 필드에 현재 시각 (DB or 시스템 시간) 을 자동으로 넣어주는 기능이다.

✅ 시점

UPdate가 실행되면 그때 값을 넣어준다.

❗️ 주의사항

INSERT 시에도 값이 들어간다 (처음 생성도 update처럼 처리되므로).

dirty checking으로 인한 update가 일어나지 않으면 값이 갱신되지 않는다.

생성자 사용

Builder

.created_at(LocalDateTime.now())

✅ 시점

builder 가 생성될때 실행된다.

차이점

결국에는 Hibernate가 관리하냐 개발자가 관리하냐 이런 느낌이다. 그만큼 hibernate가 dirty checking역활이 느껴진다.

글 읽어주셔서 감사합니다! :)

profile
코드 깍는 개발자 kangyohan.dev.0421@gmail.com

0개의 댓글