스프링 부트 프로젝트에서 Entity를 만들며 항상 밑과 같은 방식으로 Entity마다 생성날짜와 수정날짜를 관리했었다.
매번 이렇게 따로 생성일과 수정일을 저장해야 하나 고민하다가 이러한 공통 속성을 묶어주는 BaseEntity를 발견했다.
바로 한 번 살펴보자.
먼저 build.gradle에서 의존성을 추가해주자.
그 이후 메인 애플리케이션에 @EnableJpaAuditing을 추가하자.
JPA Auditing
Auditing 뜻은 감시한다는 뜻으로 JPA를 감시한다는 의미이다. 즉 JPA Auditing은 JPA를 감시하며 엔티티와 관련된 이벤트를 추적하고 기록한다. 이것을 사용한다면 엔티티의 생성일과 수정일을 자동으로 관리하는 기능을 제공하여 개발자가 수동으로 관리하지 않아도 되는 장점이 있다.
그다음 추상클래스로 Base Entity를 만들자.
추상클래스로 만드는 이유는, 그냥 일반클래스로 만든다면 인스턴스화해서 사용할 수 있지만 굳이 인스턴스를 만들 필요가 없다. (개발자가 실수로 BaseEntity를 만들 수도 있는걸 방지) 반드시 자식 클래스에서 상속받아서 사용할 수 있도록 추상클래스로 구현하자.
@MappedSuperclass
BaseEntity를 상속받은 자식 클래스에게, 부모 클래스의 매핑 정보를 자식 클래스에게 제공해주는 어노테이션이다. 즉 자식 엔티티들은 덕분에 모두 위와 같은 공통 속성을 가지게 된다.
@EntityListensers(AuditingEntityListener.class)
AuditingEntityListener.class는 엔티티의 생성, 수정, 삭제 등 이벤트가 발생했을때, 변경사항을 감시하기 위한 클래스이다. 따라서 @CreatedDate @LastModifiedDate를 적용하여 엔티티의 생성일과 마지막 수정일을 간편하게 관리할 수 있다.
마지막으로 이것을 상속받아서 사용하면 끝이다.
이렇게 하고 실행한다면 밑처럼 자동으로 엔티티의 생성일과 수정일을 관리해주는 컬럼이 생성될 것이다.
'프로젝트 > WMS' 카테고리의 다른 글
[CI/CD] EC2+도커+젠킨스+NIGNX 배포하기 (1) (1) | 2024.11.04 |
---|---|
[JPA] List 조회시 N+1문제 Fetch join으로 성능 개선하기 (0) | 2024.08.08 |
[AWS/S3] Spring에서 S3에 데이터 저장하기 (0) | 2024.08.06 |
Spirng Security + JWT + OAUTH2 를 활용한 일반로그인, 소셜로그인(Kakao) (2) (0) | 2024.07.03 |
Spirng Security + JWT + OAUTH2 를 활용한 일반로그인, 소셜로그인(Kakao) (1) (1) | 2024.07.02 |