스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하기에는, 구현해야 할 기능이 너무 많음
다음과 같은 이유 등으로 인터페이스를 직접 구현하고 싶을 때 필요한 기능
JPA 직접 사용(em)
JDBC Template 사용
MyBatis 사용
DB 커넥션 직접 사용
QueryDSL 사용 등
사용 방법
새 인터페이스 만듦: CustomMemberRepository
public interface CustomMemberRepository {
List<Member> findMemberCustom();
}
새 인터페이스의 구현체 생성: MemberDataJpaRepositoryImpl (명명 주의!)
@RequiredArgsConstructor
public class MemberDataJpaRepositoryImpl implements CustomMemberRepository {
private final EntityManager em;
@Override
public List<Member> findMemberCustom() {
return em.createQuery("SELECT m FROM Member m")
.getResultList();
}
}
사용할 Data JPA Repsitory가 커스텀 인터페이스도 상속받게 만듦
public interface MemberDataJpaRepository extends JpaRepository<Member, Long>, CustomMemberRepository {
주의사항
새 인터페이스의 구현체 명은 우리가 사용할 리포지터리명 + Impl 형태로 명명해야 한다.