@Configuration
@EnableJpaAuditing
class JpaAuditingConfig
@MappedSuperclass
@EntityListeners(AuditingEntityListener::class)
abstract class BaseEntity {
@CreatedDate
@Column(columnDefinition = "TIMESTAMP(6)", name = "created_at", nullable = false, updatable = false)
var createdAt: LocalDateTime = LocalDateTime.now()
protected set
@LastModifiedDate
@Column(columnDefinition = "TIMESTAMP(6)", name = "updated_at", nullable = false)
var updatedAt: LocalDateTime = LocalDateTime.now()
protected set
}
엔티티가 생성되고 변경되는 시점을 감지해 생성시각, 수정시각을 기록할 수 있다.
먼저 EnableJpaAuditing 어노테이션을 사용하여, Auditing을 활성화 해야한다.
@Entity
@Table(name = "posts")
class Post private constructor(
_title: String,
_content: String,
_member: Member
) : BaseEntity() {
@Column(name = "ended_at")
var endedAt: LocalDateTime = createdAt.plusDays(14)
private set
...
fun from() = PostResponse(
id = id,
title = title,
content = content,
member = member.nickname,
createdAt = createdAt,
endedAt = endedAt
)
이후 엔티티 클래스에 상속받고 사용한다.