본문 바로가기
Spring Boot/Kotlin

[Spring boot / Kotlin] 생성/수정 시간 자동화

by D.B_18 2021. 12. 20.

방명록에 댓글을 등록할 때, 댓글이 달린 생성 시간과 수정 시간을 자동으로 추가되도록 해보겠습니다..!

매번 생성, 수정되는 날짜를 직접 입력하기에는 번거롭고 코드가 지저분해지기 때문에 Jpa Auditing을 이용해 이를 구현해보겠습니다.

 

우선 BaseTime 이라는 이름의 Entity를 생성해줍니다.

@MappedSuperclass
@EntityListeners(AuditingEntityListener::class)
abstract class BaseTime {
    @CreationTimestamp
    @Column(nullable = false, updatable = false)
    val createdAt: LocalDateTime? = null

    @CreationTimestamp
    @Column(nullable = false)
    val updatedAt: LocalDateTime? = null
}

생성 일자를 나타내는 컬럼인 createAt은 수정되었을 때 날짜가 최신화되지 않게 하기 위해서

@Column에 updatable = false를 추가해줍니다.

 

다음으로, Jpa Auditing 어노테이션들을 활성화할 수 있게 application 클래스에 어노테이션을 추가합니다.

@EnableJpaAuditing
@SpringBootApplication
class Application

fun main(args: Array<String>) {
    runApplication<Application>(*args)
}

 

마지막으로, 생성/수정 시간을 자동화하고자 하는 Entity 클래스가 BaseTime을 상속받도록 해주면 됩니다.

@Entity
class GuestBook(user: User, comment: String): BaseTime() {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    var id: Long? = null

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id", nullable = false)
    @JsonIgnore
    var user: User = user

    @Column(nullable = false)
    var comment: String = comment
}

 

728x90
반응형