본문 바로가기
Study/실전! QueryDSL

Day 6. Spring Data JPA에서 지원하는 QueryDSL

반응형

본 포스트는 인프런 - 실전! QueryDSL의 강의를 듣고 공부한 내용입니다

https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84

 

실전! Querydsl - 인프런 | 강의

Querydsl의 기초부터 실무 활용까지 한번에 해결, 본 강의는 자바 백엔드 개발의 실전 코스를 완성하는 마지막 강의 입니다. 스프링 부트와 JPA 실무 완전 정복 로드맵을 우선 확인해주세요. 로드

www.inflearn.com


1. Spring Data JPA에서 지원하는 QueryDSL

  • 지금부터 소개하는 기술은 제약이 커서 복잡한 실무 환경에서 사용하기에는 많이 부족합니다
  • 그대로 Spring Data JPA에서 지원하는 기능이므로 간략한 소개만 하겠습니다

 

1-1. QuerydslPredicateExecutor

  • org.springframework.data.querydsl.QuerydslPredicateExecutor
  • 정의된 메서드 기능을 쓸 수 있고, 파라미터로 QueryDSL 조건을 넣을 수 있다
  • 예제 코드
    // Repository
    public interface MemberRepository extends QuerydslPredicateExecutor {
    
    	...
        
    }​


    // 사용 예제
    memberRepository.findAll(QMember.member.age.between(20,30));​
    • 파라미터로 기존에 Q-Type으로 정의했던 Where절 조건들이 들어갈 수 있다
    • 한계점
      • 조인X ( 묵시적 조인은 가능하지만, left join이 불가능 ), 한 테이블에서만 동작하기에 용이...
      • 파라미터로 넘겨야하는게 특화된 기술인 QueryDSL이다. 즉 Repository를 가져다 쓰는 Layer에서 QueryDSL 기술의 의존성을 가지게된다..

 

1-2. @QuerydslPredicate

  • 해당 어노테이션으로 Controller에서 파라미터 바인딩을 해주고 앞서 말했던 QuerydslPredicateExecutor의 파라미터(Predicate)로 넘기면 QueryDSL의 조건문을 알아서 생성한다
  • 사실상 eq 계열만 된다(contains, in)
  • 커스텀하기 심각하게 복잡.. 

 

1-3. QueryRepositorySupport

  • org.springframework.data.jpa.repository.support.QueryRepositorySupport
  • QueryDSL을 쓰기위해서 Repository가 상속받으면 편한 추상 클래스
  • 제공되는 기능
    • EntityManager 사용 가능 ( QueryRepositorySupport가 주입받음 )
    • from절부터 시작하는 메서드 체이닝 지원 ( 직접 JpaQueryFactory를 주입안받아도 된다 )
    • 손쉬운 Paging 기능 ( getQueryDsl().applyPagination() 사용, 단.. Sort가 정상적으로 안됨 )
  • 한계점
    • select()로 시작할 수 없음 ( 어색.. )
    • queryFactory를 사용하게끔 지원하지 않음
    • QueryDSL 3.X를 기준으로 만들어짐 ( 현재 QueryDSL 4.X )

 

728x90
반응형

'Study > 실전! QueryDSL' 카테고리의 다른 글

Day 5. Spring Data JPA와 QueryDSL  (0) 2021.10.06
Day 4. 순수 JPA와 QueryDSL  (0) 2021.10.05
Day 3. QueryDSL 중급 문법  (0) 2021.10.03
Day 2. QueryDSL 기본 문법  (0) 2021.09.24
Day 1. QueryDSL 소개 및 프로젝트 설정  (0) 2021.09.19