개발
home
⏱️

Kotlin Spring Boot에서 @CreationTimestamp, @UpdateTimestamp을 설정하는 방법

Created
2023/05/03
Tags
CreationTimestamp
UpdateTimestamp
Kotlin
SpringBoot
Kotlin Spring Boot를 사용하여 엔티티의 생성 시간과 수정 시간을 자동으로 설정하기 위해 @CreationTimestamp@UpdateTimestamp 어노테이션을 사용할 수 있습니다.

@CreationTimestamp, @UpdateTimestamp 설정하기

Kotlin Spring Boot에서 JPA를 사용하여 엔티티 클래스의 생성일(@CreationTimestamp) 및 수정일(@UpdateTimestamp)을 자동으로 설정하는 방법에 대해 설명합니다.

엔티티 클래스에 어노테이션 추가

@CreationTimestamp 및 @UpdateTimestamp 어노테이션을 엔티티 클래스의 필드에 추가합니다.
@Entity class User( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, val name: String, @field:CreationTimestamp // ⭐️ field: @Column(name = "created_at", nullable = false, updatable = false) val createdAt: ZonedDateTime? = null, @field:UpdateTimestamp // ⭐️ field: @Column(name = "updated_at", nullable = false) val updatedAt: ZonedDateTime? = null, )
Kotlin
복사
중요한 것은 Annotation use-site targets을 정의하는 것입니다.
@field:CreationTimestamp, @field:UpdateTimestamp 로 field에 annotation을 선언하는 것임을 명시해야합니다.

테스트

엔티티를 생성하고 수정한 후 생성일과 수정일이 자동으로 설정되었는지 확인합니다.
import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.SpringBootTest @SpringBootTest class UserTests( @Autowired val userRepository: UserRepository ) { @Test fun `create user`() { // given val user = User(name = "Leedo") // when userRepository.save(user) // then assertThat(user.createdAt).isNotNull assertThat(user.updatedAt).isNotNull } @Test fun `update user`() { // given val user = userRepository.save(User(name = "Leedo")) // when Thread.sleep(1000) // wait for a second user.name = "New Leedo" userRepository.save(user) // then assertThat(user.createdAt).isNotNull assertThat(user.updatedAt).isNotNull assertThat(user.updatedAt).isAfter(user.createdAt) } }
Kotlin
복사

Reference