[JPA] 사용자 정의 Repository

컴공생의 코딩 일기·2023년 2월 3일
0

JPA

목록 보기
5/14
post-thumbnail

사용자 정의 Repository

  • 스프링 데이터 JPA Repository는 인터페이스만 정의하고 구현체는 스프링이 자동 생성
  • 스프링 데이터 JPA가 제공하는 인터페이스를 적접 구현하면 구현해야 하는 기능이 너무 많고 복잡한 쿼리를 따로 분리할 필요가 있을 때 사용된다.
    • JPA 직접 사용(EntityManager)
    • 스프링 JDBC Template 사용
    • MyBatis 사용
    • 데이터베이스 커넥션 직접 사용
    • Querydsl 사용 등등

사용자 정의 Repository 인터페이스 구현

public interface MemberRepositoryCustom {
    List<Member> findMemberCustom();
}

사용자 정의 Repository 인터페이스 구현 클래스

@RequiredArgsConstructor
public class MemberRepositoryImpl implements MemberRepositoryCustom{

    private final EntityManager em;

    @Override
    public List<Member> findMemberCustom() {
        return em.createQuery("select m from Member m").getResultList();
    }
}
// or
public class MemberRepositoryCustomImpl implements MemberRepositoryCustom{
}

사용자 정의 인터페이스를 생성 후 인터페이스를 상속 받은 클래스에서 정의한 기능을 구현해줘야 한다.

  • 사용자 정의 클래스는 다음과 같은 규칙을 따른다.
    • 리포지토리 인터페이스 이름 + Impl (스프링 데이터 JPA가 인식해서 스프링 빈으로 등록)
    • 사용자 정의 인터페이스 명 + Impl
    • 둘 중에 하나 사용하면 된다.

사용자 정의 인터페이스 상속

public interface MemberRepository extends JpaRepository<Member, Long> , MemberRepositoryCustom{
}

사용자 정의 메서드 호출 코드

List<Member> result = memberRepository.findMemberCustom()
profile
더 좋은 개발자가 되기위한 과정

0개의 댓글