728x90
BaseEntity 생성
package com.study.datajpa.entity;
import lombok.Getter;
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 javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
@Getter
public class BaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
@CreatedBy
@Column(updatable = false)
private String createBy;
@LastModifiedBy
private String lastModifiedBy;
}
Application 메인메소드에 @EnableJpaAuditing 등록후 AuditorAware<> 빈 등록
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.domain.AuditorAware;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import java.util.Optional;
import java.util.UUID;
@SpringBootApplication
@EnableJpaAuditing
public class DataJpaApplication {
public static void main(String[] args) {
SpringApplication.run(DataJpaApplication.class, args);
}
@Bean
// 등록되거나 수정될때마다다 auditorProvider 함수 실행 @CreateBy 및 @LastModifiedBy 어노테이션 붙은 속성에 적용
AuditorAware<String> auditorProvider() {
// 현재 테스트 코드기때문 UUID 넣은것이고 실제로는 세션에서등에서 수정자 삽입
return () -> Optional.of(UUID.randomUUID().toString());
//람다식 일반 코드로 변환
// @Override
// public Optional<String> getCurrentAuditor() {
// return Optional.of(UUID.randomUUID().toString());
// }
}
}
728x90
'백엔드 > JPA' 카테고리의 다른 글
JPA Auditing으로 생성일/수정일 자동화하기 (0) | 2021.12.29 |
---|---|
스프링 데이터 jpa 사용자 정의 ID를 사용하는경우 (0) | 2021.10.24 |
스프링 데이터 jpa 사용자 정의 repository 구현 (0) | 2021.10.23 |
스프링 데이터 jpa 패치조인 @EntityGraph (0) | 2021.10.23 |
스프링 데이터 jpa 벌크 쿼리 (0) | 2021.10.23 |