@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
public abstract class BaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
@CreatedBy
@Column(updatable = false)
private String createdBy;
@LastModifiedBy
private String lastModifiedBy;
}
등록자, 수정자를 처리해주는 AuditorAware 스프링 빈 등록
DataJpaApplication에 추가함.
@SpringBootApplication
public class DataJpaApplication {
public static void main(String[] args) {
SpringApplication.run(DataJpaApplication.class, args);
}
// 추가한 부분
@Bean
public AuditorAware<String> auditorProvider() {
return () -> Optional.of(UUID.randomUUID().toString());
}
}
실무에서는 세션 정보나, 스프링 시큐리티 로그인 정보에서 ID를 받음
참고: 실무에서 대부분의 엔티티는 등록시간, 수정시간이 필요하지만, 등록자, 수정자는 없을 수도 있다.
그래서 다음과 같이 Base 타입을 분리하고, 원하는 타입을 선택해서 상속한다.
public abstract class BaseTimeEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
}
public abstract class BaseEntity extends BaseTimeEntity {
@CreatedBy
@Column(updatable = false)
private String createdBy;
@LastModifiedBy
private String lastModifiedBy;
}
'프로그래밍 > SpringDataJPA' 카테고리의 다른 글
JPA Hint & Lock (0) | 2022.06.19 |
---|---|
Spring Data Jpa - @EntityGraph (JPA - PetchJoin) (0) | 2022.06.19 |
벌크성 수정 쿼리 (0) | 2022.06.18 |
스프링 데이터 JPA 페이징과 정렬 (0) | 2022.06.18 |
순수 JPA 페이징과 정렬 (0) | 2022.06.18 |