Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- transaction
- Greedy
- Exception
- 스프링 핵심 기능
- pointcut
- Proxy
- Android
- 김영한
- db
- 스프링
- 자바
- 백준
- Thymeleaf
- 인프런
- spring
- 그리디
- Servlet
- springdatajpa
- JDBC
- http
- kotlin
- 스프링 핵심 원리
- jpa
- 알고리즘
- java
- JPQL
- SpringBoot
- AOP
- QueryDSL
- Spring Boot
Archives
- Today
- Total
개발자되기 프로젝트
인터페이스 지원 : QuerydslPredicateExecutor 본문
해당 기능은 제약이 커서 실무에서 사용하기에는 현실적으로 어려움..ㅜㅜ
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
'인프런 > [인프런] QueryDsl' 카테고리의 다른 글
리포지토리 지원 - QuerydslRepositorySupport (0) | 2021.09.05 |
---|---|
Controller, Paging, Sorting (0) | 2021.09.05 |
CountQuery 최적화 (0) | 2021.09.05 |
Querydsl 페이징 연동 (0) | 2021.09.04 |
SpringDataJPA Repository, 사용자 정의 repository (0) | 2021.09.04 |
Comments