Java&Web

[JPA] Spring Data JPA (4) - 사용자 정의 Repository

프로그래민 2020. 8. 28. 16:35
반응형

Spring Data JPA는 다양한 프레임워크와 연동기능을 제공한다. JPA만으로 해결할 수 없는 동적쿼리등을 지원하기 위함이다. 대표적으로 QueryDSL 등을 사용하고, JDBC Template, Mybatis 등도 사용할 수 있다. 가장 많이 사용해본 Mybatis와의 연동을 실습해보았다.

 

사용자 정의 Repository - MyBatis

MemberRepositroy에 기존 Spring Data JPA가 제공하는 메소드 말고, 다른 프레임워크(Mybatis)를 이용한 메소드를 추가하기 위해 다음과 같은 사용자 정의 Repository와 구현체 class를 만들어보았다.

1
2
3
public interface MemberRepositoryMybatis {
    List<Member> findDynamic(MemberDto memberDto);
}
                                                                                       

 

1
2
3
4
5
6
7
8
9
10
11
@Repository
public class MemberRepositoryImpl implements MemberRepositoryMybatis{
    
    @Autowired
    Sqlsession session;
 
    @Override
    List<Member> findDynamic(MemberDto memberDto) {
        return session.select("member.find",memberDto);
    }
}
                                                    

여기서 중요한 점이 있다. 기존 Spring Data JPA의 인터페이스인 MemberRepository에 MemberRepositoryMybatis 의 메소드를 추가하는 것이기에 구현체의 이름을 꼭 MemberRepositoryImpl 로 해주어야 한다. 이렇게 해두면 Spring Data JPA가 자동으로 이것을 인지하고 상속받게 되어있다.

그 후 기존 MemberRepository에 다음과 같이 JpaRepsitory 옆에 상속을 해준다.

1
2
3
4
public interface MemberRepository extends JpaRepository<Member,Long>,MemberRepositoryMybatis {
   List<Member> findByEmailAndName(String email,String name);
}
 
                     

 

 

출처 : 자바 ORM 표준 JPA 프로그래밍 - 에이콘 출판, 김영한 저
반응형