스프링데이터 JPA - 사용자 정의 레퍼지토리 구현
2021. 2. 7. 23:25ㆍJPA/SPRING DATA JPA
사용자 정의 레퍼지토리
- 스프링데이터 JPA는 레퍼지토리만 인터페이스로 정의해두면 스프링데이터 JPA 규칙에 따라 해당 레퍼지토리 인터페이스를 구현하지 않아도 스프링이 내부적으로 구현클래스를 생성하여 제공해준다.
- 하지만 다양한 이유로 인해서 레퍼지토리의 구현을 직접 해야할 필요가 있을 수 있다.
- JPA 직접 사용(EntityManager)
- 스프링 JDBC Template 사용
- MyBatis 사용
- 데이터베이스 커넥션 직접 사용
- Querydsl 사용
- 그래서 스프링데이터 JPA에서는 사용자 정의 레퍼지토리를 구현할 수 있는 방법을 제공한다.
- 먼저 메인 레퍼지토리와는 별개로 사용자 정의 레퍼지토리를 따로 인터페이스로 정의 한다.
- 해당 레퍼지토리를 구현하는 클래스를 만든다
- 이때 구현 클래스명에 명명 규칙이 있다.
- 메인 레퍼지토리명 + "Impl" 또는 사용자 정의 레퍼지토리명 + "Impl"(스프링 데이터 2.x 부터 지원 - 권장)
- 메인 레퍼지토리는 사용자 정의 레퍼지토리를 상속 받는다.
- 해당 방법으로 구현하면 메인 레퍼지토리로 구현한 메서드를 사용할 수 있다.
//사용자 정의 레퍼지토리 + Impl
@RequiredArgsConstructor
public class RepositoryCustomImpl implements RepositoryCustom {
private final EntityManager em;
...
}
// 또는!!
//메인 레퍼지토리 + Impl
@RequiredArgsConstructor
public class MainRepositoryImpl implements RepositoryCustom {
private final EntityManager em;
...
}
//사용자 정의 레퍼지토리 상속
public interface MainRepository extends JpaRepository<Entity, Long>, RepositoryCustom {
...
}
'JPA > SPRING DATA JPA' 카테고리의 다른 글
스프링데이터 JPA - 도메인 클래스 컨버터 (0) | 2021.02.08 |
---|---|
스프링 데이터 JPA - Auditing, 엔티티에 등록일, 수정일, 등록자, 수정자 자동으로 적용하기! (0) | 2021.02.08 |
스프링 데이터 JPA[쿼리 메서드] - 벌크 연산 (0) | 2021.02.06 |
스프링데이터 JPA[쿼리 메서드] - 페이징 (0) | 2021.02.06 |
스프링데이터 JPA[쿼리 메서드] - @Query 어노테이션 사용법 (0) | 2021.02.06 |