개요
운영 데이터에서 생성 시간과 수정 시간은 매우 중요한 정보입니다. 이 정보는 데이터의 변경 이력을 추적하고 유지보수에 도움을 주는데 핵심적인 역할을 합니다. 이번 포스팅에서는 생성 시간과 수정 시간을 JPA Auditing을 활용하여 자동화하는 방법에 대해 정리해 보았습니다.
제가 실무에서 마이바티스를 사용하던 시절에는 주로 SYSDATE와 같은 SQL 함수를 사용하여 생성 시간과 수정 시간을 처리했었습니다. 하지만 Spring Data JPA를 사용한다면 JPA Auditing을 활용하여 이러한 작업을 자동화할 수 있습니다. JPA Auditing은 Java Persistence API의 기능 중 하나로, 엔티티의 생성 시간과 수정 시간을 자동으로 관리해주는 기능입니다.
BaseEntity 클래스 생성
JPA Auditing을 적용할 엔티티 클래스에는 @EntityListners, @MappedSuperclass 어노테이션을 사용해야 합니다. 먼저, BaseEntity 클래스를 생성하고 어노테이션을 추가해줍니다.

@MappedSuperclass는 모든 JPA 엔티티들이 BaseEntity를 상속 받을 경우 BaseEntity의 필드도 컬럼으로 인식하도록 합니다.
@EntityListeners는 BaseEntity 클래스에 Auditing 기능을 포함시킵니다.
다음으로 실제 사용할 엔티티 클래스에 BaseEntity를 상속받습니다.

설정 추가
마지막으로 JPA Auditing을 사용하기 위해 설정을 추가해줘야 합니다. @EnableJpaAuditing 어노테이션을 사용하여 JPA Auditing을 활성화합니다.

테스트
이제 JPA Auditing이 적용된 엔티티를 사용하여 테스트해보겠습니다.


위 테스트를 실행하면 Member 객체를 저장할 때 생성시간과 수정 시간이 자동으로 설정되는 것을 확인할 수 있었습니다.
JPA Auditing을 사용하면 엔티티의 생성 시간과 수정시간을 자동으로 관리할 수 있었습니다. 마이바티스에서 네이티브 쿼리 작성 시 중복적으로 SYSDATE를 사용하거나 자바 코드로 시간 관련 로직을 직접 작성하지 않아도 되므로 편리하게 개발할 수 있을 것 같습니다.
'Framework & Library > JPA' 카테고리의 다른 글
| [JPA] beans.factory.UnsatisfiedDependencyException (0) | 2023.07.31 |
|---|---|
| [JPA] Multi Fetch Join의 한계 (1) | 2023.07.12 |
| [JPA] 영속성 전이(Cascade)로 엔티티 생명주기를 쉽게 관리하자 (0) | 2022.07.28 |