Backend/SpringBoot

스프링부트 입문 9. JPA 부가기능(with Auditing, MappedSuperclass)

오솔히 2024. 3. 15. 17:58

개인적인 일상(무릎부상)으로 인해 블록이 잠깐 딜레이 됐다..
다시 열심히 기록해야지~~
그나저나 날이 풀려서 너무 졸리긴 하네...

오늘은 JPA에 부가적인 기능들에 대해 공부를 해봤다!


 

1. JPA Auditing

 

각 엔티티 별로 누가, 언제 접근했는지 기록하여 감시 체계를 구리는 것을 의미한다. 


대부분의 테이블의 컬럼에는 생성일, 생성자, 수정일, 수정자 등의 컬럼들이 존재한다.
(필요 없어 보이는 컬럼 같아 보이지만 유지보수측면에서는 꼭 필요한 컬럼이다.)
이러한 반복적인 컬럼을 공통적으로 처리해 주는 기능이 JPA에는 존재한다.
@CreatedDate, @CreatedBy, @LastModifiedDate, @LastModifiedBy 등의 어노테이션으로 자동으로 값을 저장한다.

(위와 같은 기능을 사용하려면 @EnableJpaAuditing 어노테이션을

부트를 실행시키는 클래스에 추가하거나 configuration 클래스를 만들어 추가하면 된다. => 후자가 테스트 코드 사용시 더 나은 방법임)
 

 + @EntityListeners(AuditingEntityListener.class)

엔티티 객체를 데이터베이스에 적용하기 전, 후에 콜백을 요청하는 어노테이션이다.

파라미터로 콜백을 요청할 클래스를 지정하여 사용가능하다.

 


2. MappedSuperclass

 

여러 엔티티 객체에서 사용되는 공통 속성이 존재할 경우에 사용하는 클래스이다.

대표적으로 id, createdAt, updatedAt 등의 필드가 있고

이러한 공통되는 속성을 별도의 클래스로 구별하여 상속받아서 사용가능하다.

 


 

얼른 후다닥 공부 끝내야지;;

시린 무릎이 언능 끝내달라고 재촉한다...