on
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