Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

인터페이스 지원 : QuerydslPredicateExecutor 본문

인프런/[인프런] QueryDsl

인터페이스 지원 : QuerydslPredicateExecutor

Seung__ 2021. 9. 5. 22:52

해당 기능은 제약이 커서 실무에서 사용하기에는 현실적으로 어려움..ㅜㅜ

 

1. 인터페이스 지원 : QuerydslPredicateExecutor


  • Repository가 QuerydslPredicateExecutor<type>을 상속받으면
  • 메서드에 Querydsl에서 사용하는 조건을 넘겨줄 수 있다.

    @Test
    public void querydslPredicateExecutorTest(){
        Team teamA = new Team("teamA");
        Team teamB = new Team("teamB");
        em.persist(teamA);
        em.persist(teamB);
        Member member1 = new Member("member1", 10, teamA);
        Member member2 = new Member("member2", 20, teamA);
        Member member3 = new Member("member3", 30, teamB);
        Member member4 = new Member("member4", 40, teamB);
        em.persist(member1);
        em.persist(member2);
        em.persist(member3);
        em.persist(member4);

        QMember member = QMember.member;
        Iterable<Member> result = memberRepository.findAll(member.age.between(10, 40)
        					.and(member.username.eq("member1")));
        for (Member findMember : result) {
            System.out.println("findMember = " + findMember);
        }
    }
 select
        member1 
    from
        Member member1 
    where
        member1.age between ?1 and ?2 
        and member1.username = ?3
findMember = Member(id=3, username=member1, age=10)

 

2. 한계점, 참고


  • 조인X (묵시적 조인은 가능하지만 left join이 불가능하다.)
  • 클라이언트가 Querydsl에 의존해야 한다. 
    • 서비스 클래스가 Querydsl이라는 구현 기술에 의존해야 한다.
    • 서비스에서 Querydsl 조건을 만들어서 넘겨줘야햠..
  • 참고: QuerydslPredicateExecutor 는 Pagable, Sort를 모두 지원하고 정상 동작한다.

 

3. GitHub : 210905 QuerydslPredicateExecutor


 

GitHub - bsh6463/Querydsl

Contribute to bsh6463/Querydsl development by creating an account on GitHub.

github.com

 

Comments