Auditing
테이블을 만들때 등록일 , 수정일을 꼭 남겨주어야한다.
엔티티를 생성, 변경시 추적을 위해서
등록일, 수정일 , 등록자 , 수정자를 꼭 남겨야 한다.
순수 JPA 사용
1.시간기록데이터 엔티티 생성
@MappedSuperClass //해당 엔티티의 필드를 다른 엔티티에서 가져다 쓸수 있게 한다.
@Getter
public class JPABaseEntity{
@Column(updatable = false , insertable = true) // 수정 등록시 데이터 변경 여부
private LocalDateTime createdDate();
private LocalDAteTime updatedDate();
//@PrePersist 는 영속화 되기 직전
//@PostPersist 는 영속화 되고난 후
@Prepersist
public void prePersist(){
LocalDateTime now = LocalDateTime.now();
this.createdDate = now;
this.updatedDate = now;
}
//@PreUpdate 는 업데이트 되기 전
//@PostUpdate 는 업데이트 되고난 후
@PreUpdate
public void preUpdate(){
updatedDate = LocalDateTime.now();
}
}
2.사용
사용할 엔티티에 extends 받기
public class Member extends JPABaseEntity()
3.실제 호출
<TEST>
memberRepository.save(member);
//prePersist 작동시점 , 이때 값이 들어간다.
스프링 데이터 JPA 사용
1.시간 기록 데이터 엔티티 생성
@EntityListeners(AuditingEntityListener.class) //꼭 넣어주어야 한다
@MappedSuperClass
@Getter
public class BaseEntity{
@CreatedDate //AuditingEntityListener 가 있어야 작동하는 기능으로 생성되는 시점의 데이터를 받아온다.
@Column(updatable = false , insertable = true)
private LocalDateTime createdDate;
@LastModifiedDate // 수정될때
private LocalDateTime lastMotifiedDate;
@CreatedBy //생성될 때 마다.
@Column(updatable = false)
private String createdBy
@LastModifiedBy //수정될 때 마다
private String lastModifiedBy
//위 기능들은 모두 @EnableJPAAuditing 이 필수다,
@Bean
public AuditorAware<String> 에서 값을 가져온다.
2.UUID 값 생성
<Data JPA Application>
@EnableJPAAuditing //꼭 넣어주어야 한다.
@SpringBootApplication
@Bean
public AuditorAware<String> auditorProvider(){
return () -> Optional.of(UUID,randomUUID(),toString())
}
사용법은 순수 JPA와 동일
이 방법을 사용하여 엔티티에 생성 , 수정 , 기록을 남길 수 있다.
}
'Spring Data JPA' 카테고리의 다른 글
| 3월 24일 SpringDataJPA 페이징과 정렬 (0) | 2023.03.24 |
|---|---|
| 3월 23일 SpringDataJPA 도메인 클래스 컨버터 (0) | 2023.03.23 |
| 3월 23일 SpringDataJPA 사용자 정의 리포지토리 구현 (0) | 2023.03.23 |
| 3월 22일 SpringDataJPA hint & lock (0) | 2023.03.22 |
| 3월 22일 SpringDataJPA EntityGraph (fetch Join) (0) | 2023.03.22 |