2025년 5월 31일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.
여기에서 원본을 확인할 수 있습니다.
들어가며
Spring Boot로 API를 만들 때 최초 업로드 된 Timestamp와 해당 Entity를 업데이트 했을 때의 Timestamp를 서비스 단에서 LocalDateTime.now() 로 직접 수정하였다. 코드로 예를 들면 아래와 같다.
...
@Entity
class Project(
...
@Column(nullable = false)
var uploadedAt: LocalDateTime? = LocalDateTime.now(),
@Column(nullable = false)
var updatedAt: LocalDateTime? = LocalDateTime.now(),
...
)
...
@Transactional
fun modifyProject(projectRequestDto: ProjectRequestDto): ResponseEntity<Any> {
...
projectRepository.save(
Project(
...
updatedAt: LocalDateTime.now(),
...
)
)
...
}
...
하지만, Hibernate에서는 Entity 객체가 Insert 또는 Update 쿼리가 발생 될 때 자동으로 현재 시간을 저장해 주는 Annotation(@CreationTimestamp / @UpdateTimestamp 를 제공하여 불필요한 코드를 줄일 수 있었다.
사용해보기
...
@Entity
class Project(
...
@Column(nullable = false)
@CreationTimestamp
var uploadedAt: LocalDateTime? = null,
@Column(nullable = false)
@UpdateTimestamp
var updatedAt: LocalDateTime? = null,
...
)
위와 같이 Entity를 수정하면, 서비스 단에서 업로드 또는 업데이트가 될 때마다 현재 시간을 업데이트 해주지 않아도 INSERT 또는 UPDATE 쿼리가 발생하면, 자동으로 현재 시간을 저장 또는 업데이트 해 준다. 특히 @UpdateTimestamp Annotation은 업데이트가 자주 이루어지는 Entity에서 자주 사용할 것 같다.
'Backend > Java' 카테고리의 다른 글
| Java Spring Boot에서 템플릿을 설정하고 이메일 발송하기 (0) | 2026.08.23 |
|---|---|
| 값이 반드시 유효해야 할 때: Spring Boot에서 Validation 처리하기 (0) | 2026.08.22 |
| Spring Boot와 ELK를 활용한 서비스 로그 수집 및 모니터링 (0) | 2026.08.22 |
| Spring Boot에서 CORS 설정 시 addCorsMappings 에러 (0) | 2026.08.22 |
| RabbitMQ를 이용해서 응답 시간을 반의 반의 반의 반으로 줄여보자 (0) | 2026.08.22 |