JPA/QueryDSL

Querydsl 실무활용

마늘냄새폴폴 2021. 10. 1. 21:23

*스프링 데이터 JPA에서의 QueryDSL 사용
사용자 정의 리포지토리를 사용하면 된다. (Spring Data JPA 참고)


*QueryDSL 페이징 연동 + 스프링 데이터 JPA
1. 사용자 정의 리포지토리를 사용해서 구현체를 만든다. 
2. 인자값으로 Pageable을 넘긴다.
3. queryFactory에서 offset메서드, limit메서드를 사용한다. // offset(pageable.getOffset()), limit(pageable.getPageSize())
4. fetchResults()메서드로 최종연산을 마무리 짓는다. // 이유 : 페이징 처리를 하려면 전체 데이터 개수를 알고 있어야 하므로
5. total사이즈를 뽑는다. fetchResults()의 결괏값으로 QueryResults타입이 나온다. 이 결과에 getResults()메서드를 하면 List타입의 결괏값이 나온다. 이 List타입의 결괏값에 getTotal()메서드를 사용하면 long타입의 결괏값이 나온다.  
6. Page타입의 구현체인 PageImpl을 리턴한다. //return new PageImpl<>(content, pageable, total);