1. 사용자 정의 Repository 구현
- Spring Data Jpa 는 인터페이스만 정의
- 구현체는 스프링이 자동생성해준다.
인터페이스의 메소드를 직접 구현하고싶다면?
- 인터페이스를 한개 생성한다.
- 인터페이스 내에 구현하고자 할 메소드를 정의한다.
- 1번에서 생성한 인터페이스에 대한 구현체를 생성한다.
- 구현체는 공통인터페이스 + Impl 로 이름을 맞춰줘야 한다.
- 공통 인터페이스에 구현체를 상속받는다.
- public interface MemberRepository extends JpaRepository<Member, Long>, MemberRepositoryCustom(2번의 구현체)
2. Auditing
순수 JPA 를 사용한 Auditing
- 상속을 통하여 사용한다.
- @PrePersist / @PostPersist / @PreUpdate / @PostUpdate
@MappedSuperclass
public class JpaBaseEntity {
@Column(updatable = false)
private LocalDateTime createdDate;
private LocalDateTime updatedDate;
// 저장하기 전
@PrePersist
public void prePersist() {
LocalDateTime now = LocalDateTime.now();
createdDate = now;
updatedDate = now;
}
// 업데이트 하기 전
@PreUpdate
public void preUpdate() {
updatedDate = LocalDateTime.now();
}
}
Spring Data Jpa 를 사용한 Auditing
- 설정이 필요하다.
- @EnableJpaAuditing
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
public class BaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
@CreatedBy
@Column(updatable = false)
private String createdBy;
@LastModifiedBy
private String lastModifiedBy;
}
- createdBy, modifiedBy 는 세션에서 아이디를 꺼내는 등 해서 사용하면 좋다.
@Bean
public AuditorAware<String> auditorProvider() {
return () -> Optional.of(UUID.randomUUID().toString());
}
'강의 정리 > 스프링 데이터 JPA' 카테고리의 다른 글
2. 쿼리 메소드 기능 (0) | 2021.01.10 |
---|---|
1. extends JpaRepository (0) | 2021.01.10 |