Backend/Database

[JPA] 생성일, 수정일 삽입용 BaseTimeEntity 만들기 (feat. Kotlin)

mopil 2022. 8. 10. 23:19
반응형

JPA Auditing 으로 생성일과 수정일을 삽입하는 용도의 super class인 BaseTimeEntity를 코틀린으로 작성하는 방법을 공유한다.

 

메인 어플리케이션 파일에 @EnableJpaAuditing 을 꼭 넣어줘야 한다.

 

# 어노테이션 기반

@MappedSuperclass
@EntityListeners(AuditingEntityListener::class)
abstract class BaseTimeEntity1 {
    @CreatedDate
    lateinit var createTime: LocalDateTime
    @LastModifiedDate
    lateinit var updateTime: LocalDateTime
}

이렇게하면 날짜 포맷팅을 지정할 순 없으나, 어노테이션으로 손 쉽게 구현이 가능하다.

이 경우 ISO 표준 포맷으로 날짜가 저장된다.

 

# 날짜 포맷을 커스터마이징 하고 싶을 때

@MappedSuperclass
@EntityListeners(AuditingEntityListener::class)
abstract class BaseTimeEntity2 {

    var createTime: String = ""
    var updateTime: String = ""

    @PrePersist
    fun prePersist() {
        this.createTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
    }

    @PreUpdate
    fun preUpdate() {
        this.updateTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
    }
}

원하는 날짜 포맷으로 포맷을 커스터마이징 하고 싶으면 이 방법을 사용하면 된다.

lateinit var 을 사용하면, 코틀린 오류가 발생하므로 var로 선언한 뒤, 초기값을 지정해주면 된다.

 
반응형