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로 선언한 뒤, 초기값을 지정해주면 된다.
반응형