[Spring Data JPA] - 사용자 정의 Repository 구현

홍정완·2022년 8월 1일
0

JPA

목록 보기
20/38
post-thumbnail

Spring Data JPA로 Repository를 개발하다 보면, 특정 메서드를 직접 구현하기 위해 구현체를 만들어야 하는 경우가 있다. 이때 Repository에다가 직접 구현하면 공통 인터페이스가 제공하는 기능까지 모두 구현해야 한다.


Spring Data JPA는 해당 문제를 해결하여 필요한 메서드만 구현해 주는 방식을 제공한다.


✅ Spring Data 2.x부터 사용자 정의 구현 클래스에 사용자 정의 인터페이스 명 + Impl 방식도 지원






// 사용자 정의 구현 클래스
public class MemberRepositoryCustomImpl implements MemberRepositoryCustom {

    @Override
    public List<Member> findMemberCustom() {
        ...
    }
}


// 사용자 정의 인터페이스
public interface MemberRepositoryCustom {

    public List<Member> findMemberCustom();
}


// 사용자 정의 인터페이스 상속
public interface MemberRepository extends JpaRepository<Member, Long>, 
    MemberRepositoryCustom {
    	...
    }

}



QueryDSL 혹은 SpringJdbcTemplate을 함께 사용할 때 사용자 정의 Repository를 사용한다.


하지만 별개의 @Repository를 생성해서 처리하는 것도 가능하기 때문에 항상 사용자 정의 리포지토리가 필요한 것은 아니다.


  • 아키텍처적인 분리

    • 커맨드와 쿼리 분리
    • 핵심 비즈니스 로직과 화면 로직 분리
    • 라이프 사이클에 따른 분리
    • ...

다각적으로 고민 후 결정하는 것이 좋다.

profile
습관이 전부다.

0개의 댓글