[Spring JPA] JPA Auditing 에 대해 알아봅시다.

최동근·2022년 12월 21일
0

스프링부트

목록 보기
13/13

안녕하세요 오늘은 스프링 데이터 JPA 에서 JPA Auditing 기능에 대해 알아보겠습니다.
스프링 데이터 JPA 를 이용하여 엔티티 클래스의 속성을 테이블에 칼럼과 매핑하다 보면 매번 반복되는 칼럼들이 존재합니다. 예를 들어 (생성일, 수정일) 있습니다.

데이터 관점에서 생성일과 수정일은 매우 중요한 데이터이기에 꼭 테이블에 기록을 해줘야 합니다.
하지만, Entity 클래스를 만들 때마다 이렇게 반복되는 칼럼들이 낭비겠죠?
이런 고민을 하는 개발자들을 위해 스프링 데이터 JPA 에서는 Auditing 기능을 제공합니다 💪

해당 기능을 사용하기 위해서는 spring-boot-starter-data-jpa 만 추가하면 됩니다.
즉, 스프링 데이터 JPA 관한 의존성만 추가해도 바로 사용이 가능합니다.
그럼 구체적인 사용법에 대해 알아볼까요? 🚀

사용법 설명은 제가 진행중인 프로젝트 기준으로 설명하겠습니다.

BaseEntity

해당 이미지는 앞으로 생성될 모든 엔티티 클래스들이 상속 받을 BasicEntity 입니다.
여기서 집중해야할 부분은 EntityListeners 어노테이션 부분과 두 개의 속성 부분입니다.


해당 이미지는 BaseEntity 에서 사용되는 어노테이션 종류입니다.

Customer

Customer 클래스가 @MappedSuperclass 가 적용된 BaseEntity 클래스를 상속하기 때문에 JPA가 Customer 클래스에서 createdAt과 modifiedAt 칼럼을 인식하게 됩니다.
Customer 엔티티 객체를 DB 저장 시 영속성 컨텍스트에 저장이 먼저 이루어지는데, 커밋 과정에서 플러쉬가 호출될때 Hibernate 가 BaseEntity의 Auditing 기능을 사용해서 시간 값을 채워줍니다.

이때 어플리케이션이 시작하는 클래스에 @EnableJpaAuditing 어노테이션을 적용해야 JPA Auditing 기능이 활성화 되는 것을 잊지 말아야합니다.


참고

JPA Auditing 기능이란?

profile
비즈니스가치를추구하는개발자

0개의 댓글