• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

페이징 할 때 Pageable 을 잘 사용하시지 않는 이유

22.08.26 23:30 작성 조회수 330

2

안녕하세요. 혼자 고민해봐도 답이 안나와서 문의를 드리게 되었습니다..!

호돌맨님께서는 페이징을 할 때 Pageable 객체를 잘 사용하지 않고, PageSearch 같은 커스텀 객체와 QueryDSL을 이용하여 직접 구현 하여 사용한다고 하셨는데, 혹시 특별한 이유가 있으신지가 너무 궁금합니다.

답변 2

·

답변을 작성해보세요.

3

딱구님의 프로필

딱구

질문자

2022.08.29

답변 감사드립니다! 며칠 고민했던 내용이 속시원하게 해결이되었습니다!

그리고 시즌 2가 기대되네요 ㅎㅎ 시즌 2가 오기전에, 제 나름 4번에 대한 이유를 공부 해봐야겠습니다 :) 감사합니다.

3

안녕하세요. 호돌맨입니다.
질문을 남겨주셔서 감사합니다.

  1. repository.findAll()
    findAll같은 경우는 Pageable을 받을 수 있게 되어있습니다. Pageable에 들어있는 값을 가지고 쿵짝쿵짝 해주는 녀석이죠. 그런데 저희는 해당 동작이 필요가 없습니다. QueryDSL로 직접 쿼리를 만들었기 때문입니다. 필요한 기능(id 내림차순 정렬, page, size)만 받고 처리하면 됩니다. 그래서 Pageable로도 할 수 있지만 우리는 직접 만들었습니다.

  2. 현실은 복잡합니다.
    현실적으로 서비스를 하다보면 Pageable로 해결되는 기능이 거의 없습니다. 대부분 복잡한 형태로 검색 옵션등을 받아 처리해야합니다. 때문에 DTO로 필요한 값을 받아 QueryDSL로 구현하는 방법을 배우시면 나중에도 좋습니다.

  3. 그리고
    페이징 동작이 어떻게 되는지 보여드리기 위함도 큽니다. 'Pageable를 파라메터로 넘기면 끝납니다!' 하면 그 안에 감춰진 동작들을 탐험 해볼 기회가 거의 없어지니깐요

  4. 강의에서는 다루지 않았지만
    (응답 관점에서) 현재는 페이징 처리 후 응답을 List<Post>형태의 JSON으로 내려주고 있습니다. 하지만 페이징 인터페이스로 한 번 감싸는 게 좋습니다(향 후 시즌2에서 다룰예정).