1. 스프링 데이터 JPA 리포지토리로 변경
2. 사용자 정의 리포지토리
3. 스프링 데이터 페이징 활용


스프링 데이터 JPA 에서 정리하였던 사용자 정의 repository 이다.
스프링 데이터 JPA 에서 querydsl 을 사용하기 위해선 사용자 정의 repository 를 구현하여 사용하거나 따로 repository를 구현하여 사용한다.





- 스프링 데이터의 Page, Pageable을 활용해보자.
- 전체 카운트를 한번에 조회하는 단순한 방법
- 데이터 내용과 전체 카운트를 별도로 조회하는 방법


Querydsl이 제공하는 fetchResults() 를 사용하면 내용과 전체 카운트를 한번에 조회할 수 있다.(실제 쿼리는 2번 호출)
fetchResult() 는 카운트 쿼리 실행시 필요없는 order by 는 제거한다.


전체 카운트를 조회 하는 방법을 최적화 할 수 있으면 이렇게 분리하면 된다. (예를 들어서 전체 카운트를 조회할 때 조인 쿼리를 줄일 수 있다면 상당한 효과가 있다.)
ㄴ코드를 리펙토링해서 내용 쿼리과 전체 카운트 쿼리를 읽기 좋게 분리하면 좋다.

스프링 데이터 라이브러리가 제공
count 쿼리가 생략 가능한 경우 생략해서 처리
페이지 시작이면서 컨텐츠 사이즈가 페이지 사이즈보다 작을 때
마지막 페이지 일 때 (offset + 컨텐츠 사이즈를 더해서 전체 사이즈 구함, 더 정확히는 마지막 페이지 이면서 컨텐츠 사이즈가 페이지 사이즈보다 작을 때)

