JPA Auditing으로 생성시간/수정시간 자동화하기

JPA Auditing으로 생성시간/수정시간 자동화하기

domain(Entity가 있는) 패키지에 BaseTimeEntity 클래스를 생성합니다.

BaseTimeEntity 클래스

BaseTimeEntity

package com.project.board.domain; import lombok.Getter; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.EntityListeners; import javax.persistence.MappedSuperclass; import java.time.LocalDateTime; @Getter @MappedSuperclass ① @EntityListeners(AuditingEntityListener.class) ② public abstract class BaseTimeEntity { @CreatedDate ③ private LocalDateTime createdDate; @LastModifiedDate ④ private LocalDateTime modifiedDate; }

BaseTimeEntity 클래스는 모든 Entity의 상위 클래스가 되어 Entity들의 createdDate, modifiedDate를 자동으로 관리하는 역할입니다.

코드설명

① @MappedSuperclass

JPA Entity 클래스들이 BaseTimeEntity를 상속할 경우 필드들(createdDate, modifiedDate)도 칼럼으로 인식하도록 합니다.

② @EntityListenrs(AuditingEntityListener.class)

BaseTimeEntity 클래스에 Auditing 기능을 포함시킵니다.

③ @CreatedDate

Entity가 생성되어 저장될 때 시간이 자동 저장됩니다.

④ @LastModifiedDate

조회한 Entity의 값을 변경할 때 시간이 자동 저장됩니다.

그리고 Entity 클래스가 BaseTimeEntity를 상속받도록 변경합니다.

마지막으로 JPA Auditing 어노테이션들을 모두 활성화할 수 있도록 Application 클래스에 활성화 어노테이션 하나를 추가합니다.

from http://nohriter.tistory.com/92 by ccl(A) rewrite - 2021-10-12 15:01:50