@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
핵심은 위의 두가지 애너테이션이다
package main22.community.domain;
import lombok.Getter;
import lombok.ToString;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;
@Getter
@ToString
@EntityListeners(AuditingEntityListener.class)//엔티티 Auditing이 동작하기위해 필수추가
@MappedSuperclass //Jpa애너테이션
public class AuditingFields { // 공통 필드에 대한 처리
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) //파라미터 파싱에 대한 룰
@CreatedDate
@Column(nullable = false, updatable = false) //수정불가
private LocalDateTime createdAt; // 생성일시
@CreatedBy
@Column(nullable = false, length = 100)//누가 만들었는지에 대한 정보 JpaConfig에서 확인
private String createdBy; // 생성자
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) //파라미터 파싱에 대한 룰
@LastModifiedDate
@Column(nullable = false)
private LocalDateTime modifiedAt; // 수정일시
@LastModifiedBy
@Column(nullable = false, length = 100)
private String modifiedBy; // 수정자
}
이렇게 공통기능으로 자주쓰는 생성, 수정시간 관련된 컬럼을 따로 클래스로 따로 관리하고 엔티티 클래스에 상속해주면 코드를 줄일 수 있다.
또한 클래스로 따로 관리하면 공통기능에 대한 수정도 편리하다
'Study > Java Spring Boot' 카테고리의 다른 글
AWS S3 버킷 연동하여 파일 업로드 하기 (1) | 2023.03.15 |
---|---|
스프링부트 - Json타입 카멜케이스 -> 스네이크 케이스 변환 (0) | 2023.03.14 |
QueryDSL기능 사용방법 및 설정 (검색기능) 심화 (1) | 2023.03.12 |
Security추가 후 Post 요청 403에러 해결 (0) | 2023.03.11 |
QueryDSL기능 사용방법 및 설정 (검색기능) 기본 (1) | 2023.03.10 |