• Spring Data JPA의 Page와 Pageable 인터페이스를 활용하여 에서 페이징 처리
  • Pageable 객체
    • 현재 페이지 번호(page), 페이지당 항목 수(size), 정렬 정보 등을 포함
    • Pageable 객체는 주로 리포지토리 메소드에 매개변수로 전달되어, 특정 페이지의 데이터를 조회하는 데 사용
    • ?page 없을경우 기본 page파라미터는 0
    • ?size없을경우 기본 페이지당 항목수는 20
    • 예를 들어)page=2 및 size=10이라면, 21번째부터 30번째 데이터만 조회하므로 서버부하 감소
  • Page객체
    • 특정 페이지에 대한 데이터 리스트를 보유
    • 전체 데이터 수, 전체 페이지 수, 현재 페이지 번호, 페이지당 데이터 수 등 페이징 처리에 필요한 다양한 정보를 제공
    • isFirst(), isLast(), hasNext(), hasPrevious()와 같은 메소드를 제공하여 현재 페이지의 상태확인
      • Page 객체를 반환하기 위해서는 전체 데이터 수를 알아야하고, Spring Data JPA는 별도의 카운트 쿼리를 실행
      • 대규모 데이터 세트에서는 이 카운트 쿼리가 성능에 영향을 줄 수 있으므로, 필요에 따라 카운트 쿼리 최적화를 고려
    • json데이터 예시
      • "content": [ { "id": 1, "title": "Post Title 1", "content": "Content of post 1", // 기타 Post 객체의 속성들... }, { "id": 2, "title": "Post Title 2", "content": "Content of post 2", // 기타 Post 객체의 속성들... } // ... 페이지 크기에 따른 추가 Post 객체들 ... ],

        "pageable": { "sort": { "sorted": true, "unsorted": false, "empty": false }, "pageNumber": 0, "pageSize": 10, "offset": 0, "paged": true, "unpaged": false }}