728x90
CountQuery 최적화


- 때에 따라서 Count 쿼리를 생략 가능할 수가 있다.
- 스프링 데이터 라이브러리가 제공
- count 쿼리가 생략 가능한 경우
- 생략해서 처리 페이지 시작이면서 컨텐츠 사이즈가 페이지 사이즈보다 작을 때
- 마지막 페이지 일 때 (offset + 컨텐츠 사이즈를 더해서 전체 사이즈 구함)
컨트롤러 개발

스프링 데이터 정렬(Sort)
JPAQuery<Member> query = queryFactory
.selectFrom(member);
for (Sort.Order o : pageable.getSort()) {
PathBuilder pathBuilder = new PathBuilder(member.getType(),
member.getMetadata());
query.orderBy(new OrderSpecifier(o.isAscending() ? Order.ASC : Order.DESC,
pathBuilder.get(o.getProperty())));
}
List<Member> result = query.fetch();
- 스프링 데이터 JPA는 자신의 정렬(Sort)을 Querydsl의 정렬(OrderSpecifier)로 편리하게 변경하는 기능을 제공한다.
- 이 부분은 뒤에 스프링 데이터 JPA가 제공하는 Querydsl 기능에서 살펴보겠다
- 스프링 데이터의 정렬을 Querydsl의 정렬로 직접 전환하는 방법은 다음 코드를 참고하자.
- 스프링 데이터 Sort를 Querydsl의 OrderSpecifier로 변환
참고
정렬( Sort )은 조건이 조금만 복잡해져도 Pageable 의 Sort 기능을 사용하기 어렵다. 루트 엔티티 범위를 넘어가는 동적 정렬 기능이 필요하면 스프링 데이터 페이징이 제공하는 Sort를 사용하기보다는 파라미터를 받아서 직접 처리하는 것을 권장한다.
728x90
'실전! Querydsl' 카테고리의 다른 글
| Ch06. 스프링 데이터 JPA가 제공하는 Querydsl 기능 - Querydsl Web 지원 (0) | 2022.01.02 |
|---|---|
| Ch06. 스프링 데이터 JPA가 제공하는 Querydsl 기능 - 인터페이스 지원(QuerydslPredicateExecutor) (0) | 2022.01.02 |
| Ch05. 실무 활용(스프링 데이터 JPA와 Querydsl) - 스프링 데이터 페이징 활용(Querydsl 페이징 연동) (0) | 2022.01.02 |
| Ch05. 실무 활용(스프링 데이터 JPA와 Querydsl) - 사용자 정의 리포지토리 (0) | 2022.01.02 |
| Ch05. 실무 활용(스프링 데이터 JPA와 Querydsl) - 스프링 데이터 JPA 리포지토리로 변경 (0) | 2022.01.02 |