#4 of Spring - 효율적인 페이징 처리 by JPA

페이징 처리 by JPA

개요

  • 목적
    • 특정 목록 조회 시, 페이징 처리를 구분하지 않고 간편하게 포함하여 처리
  • 클래스 구조
    • 상속 관계
      • JpaRepository -> PagingAndSortingRepository -> CrudRepository


구동순서

  • Controller
    • final Pageable pageable 인자 받음 from 클라이언트
    • 서비스단으로 이동
    • 레포지토리단으로 이동
      • findAll(pageable) 함수로 원하는 목록 조회 w/ 페이징 변수
    • 주요 페이징 변수 정보
      • sort = 정렬 정보
        • 파라미터로 sort=id,asc|createdAt,desc 와 같이 2개 이상 입력 가능
      • pageNumber = 현재 조회하고자 하는 페이지 번호
        • 디폴트 = 0 -> 1이 되도록 조치해주는 것이 좋음
      • size = 한 페이지당 표시할 조회 데이터 수
        • 디폴트 = 20 -> 원하는만큼 조절 가능

개선사항

  • 이슈 List
    • 페이지 번호가 0부터 시작하는 문제
    • size limit 없음
    • 현재 조회하고자 하는 페이지 번호 인식 가능해야 함
      • 요청이 들어온 페이지 번호에 맞춰 알맞은 데이터 조회
  • 해결방법
    • PageRequest 객체 활용
    • of() 함수 호출 -> 아래 내용들 커스텀 설정 가능
      • setPage()
        • 요청들어 온 페이지 번호가 0 이하이면 1로 조정
      • setSize()
        • 디폴트 크기 설정
        • 최대 크기 제한
      • setDirection()
        • 정렬 방향 지정
          • 오름차순 asc
          • 내림차순 desc
      • 상세한 소스 구현은 아래 References 링크 참고

References






댓글