CH05 실무활용 (스프링 데이터 JPA와 Querydsl)
사용자 정의 리포지토리
스프링 데이터 JPA 에서 이미 다뤘던 내용이다.

굳이 Custom 에 넣어서 하나의 레포지토리 아래에서 동작하게 할 필요는 없고 때에 따라 독립적인 레포지토리를 만들어서 거기서 꺼내 쓰는 것도 좋다.
스프링 데이터 페이징 활용1 (Querydsl 페이징 연동)
전체 카운트를 한번에 조회하는 단순한 방법
Querydsl이 제공하는 fetchResults() 를 사용하면 내용과 전체 카운트를 한번에 조회할 수 있다.(실제 쿼리는 2번 호출)
fetchResult() 는 카운트 쿼리 실행시 필요없는 order by 는 제거한다.
데이터 내용과 전체 카운트를 별도로 조회하는 방법
전체 카운트를 조회 하는 방법을 최적화 할 수 있으면 이렇게 분리하면 된다. (예를 들어서 전체 카운트를 조회할 때 조인 쿼리를 줄일 수 있다면 상당한 효과가 있다.)
코드를 리펙토링해서 내용 쿼리와 전체 카운트 쿼리를 읽기 좋게 분리하면 좋다.
스프링 데이터 페이징 활용2 (CountQuery 최적화)
PageableExecutionUtils.getPage()로 최적화
스프링 데이터 라이브러리가 제공
count 쿼리가 생략 가능한 경우 생략해서 처리
페이지 시작이면서 컨텐츠 사이즈가 페이지 사이즈보다 작을 때
마지막 페이지 일 때 (offset + 컨텐츠 사이즈를 더해서 전체 사이즈 구함)
Last updated