스프링 데이터 JPA로 리포지토리를 개발하면 인터페이스만 정의하고 구현체는 만들지 않는다. 그러나 다양한 이유로 메소드를 직접 구현해야 할 때도 있다. 그렇다고 리포지토리를 직접 구현하면 공통 인터페이스가 제공하는 기능까지 모두 구현해야 한다.
스프링 데이터 JPA는 이런 문제를 우회해서 필요한 메소드만 구현할 수 있는 방법을 제공한다.
java public interface MemberRepositoryCustom{ public List<Member> findMemberCustom(); } 2. 다음으로 사용자 정의 인터페이스를 구현한 클래스를 작성해야 한다.클래스 이름을 짓는 규칙이 있다. (리포지토리 인터페이스명 + Impl)
이렇게 하면 스프링 데이터 JPA가 사용자 정의 구현 클래스로 인식한다. java public class MemberRepositoryImpl implements MemberRepositoryCustom{ @Override public List<Member> findMemberCustom(){ //사용자 정의 구현 } } 3. 마지막으로 리포지토리 인터페이스에서 사용자 정의 인터페이스를 상속받으면 된다. java public interface MemberRepository extends JpaRepository<Member, Long>, MemberRepositoryCustom{} 만약 사용자 정의 구현 클래스 이름 끝에 Impl 대신 다른 이름을 붙이고 싶으면 repository-impl-postfix 속성을 변경하면 된다.(Impl은 기본값)
```xml
<!--xml 설정-->
<repositories base-package="orm.tmkim.jpashop.repository" repository-impl-postfix="Impl">
//javaConfig 설정
@EnableJpaRepositories(basePackages = "orm.tmkim.jpashop.repository", repositoryImplementationPostfix = "Impl")