[Kotlin] BaseEntity - JPA Entity Auditing

해니·2024년 8월 30일

Kotlin

목록 보기
2/9
post-thumbnail



JPA Entity Auditing이란?

  • Java Persistence API에서 제공하는 기능 중 하나로, 엔터티의 변경 이력을 추적하고 관리하는 데 사용된다.
  • DB에서 특정 테이블의 Record가 언제 생성되었고, 언제 마지막으로 수정되었는지를 추적하는 데 활용된다.
  • 주로 생성일자(Created Date), 수정일자(Last Modified Date), 생성자(Created By), 수정자(Last Modified By) 4가지의 핵심적인 이벤트를 추적하게 된다.



JPA Entity Auditing 사용 방법


Application

  • @EnableJpaAuditing 어노테이션을 사용하여 Auditing 기능을 활성화시킨다.
@EnableJpaAuditing
@SpringBootApplication
class Application

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



BaseEntity 정의

@MappedSuperclass
@EntityListeners(AuditingEntityListener::class)
abstract class BaseEntity {
  @CreatedDate
  @Column(nullable = false, updatable = false)
  var createdAt: LocalDateTime = LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault())

  @LastModifiedDate
  @Column(nullable = false)
  var modifiedAt: LocalDateTime = LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault())
}
  • @MappedSuperclass
    • 공통 매핑 정보가 필요할 때 사용
    • 해당 Annotation이 선언된 클래스는 Entity가 아니며, 직접 사용될 일이 없기 때문에 추상 클래스로 선언한다.
  • @EntityListeners(AuditingEntityListener::class)
    • Entity에서 이벤트가 발생할 때마다 Auditing처럼 특정 기능을 수행한다.

var으로 정의해주어야 런타임 에러가 발생하지 않는다.



BaseEntity 상속

@Entity
class User(
  @Column(length = 30, nullable = false)
  private val name: String,

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  val id: Long
): BaseEntity() {
}





출처

Spring Data JPA with Kotlin - Entity Auditing
Kotlin Jpa Auditing - Entity 수정, 생성기간 저장
스프링 Data JPA: Auditing 적용 방법 [Kotlin]

profile
💻 ⚾️ 🐻 https://dev-haeni.tistory.com/

0개의 댓글