게시판 글의 수는 수천,수만게 되는 경우가 많지만, 사실상 화면단 에서 보여지는 글의 수는 제한 적이다. 즉 한페이지만 정렬해서 보여 주게 된다.이런 페이징을 구현하기 위해 스프링에서 Pageable 클래스를 통하여 간단하게 구현할 수 있게 라이브러리를 제공한다.
Pageable은 Pagination(글번호 매기기) 와 Sorting(글 정렬)을 처리할 수 있도록 도와주는 인터페이스다.
페이지 정렬 방식과 페이지의 크기,그리고 몇번째 페이지 인지의 요청에 따라 정보를 전달해 주는 것이 Pagination이다. 이를 이용하여 개발자가 직접 구현할 수 도 있지만,JPA에서는 이를 위해 Pageable객체를 제공하여 개발의 편의를 제공하고 있다.
Pageable은 페이징 요청을 표현하는 인터페이스이며, PageRequest는 이를 구현한 클래스이다. Page는 Pageable을 사용하여 쿼리한 결과를 나타내며, 페이징된 데이터와 관련된 메타 정보를 제공한다.

Pageable은 Spring에서 페이징 기능을 위한 파라미터들을 추상화 시킨 인터페이스로 Spring Data JPA에서 페이징 처리를 위해 사용되는 핵심 인터페이스이다.
Pageable을 사용하여 조건에 맞도록 Pagination과 원하는 데이터로 정렬을 구현할 수 있다.정렬 기능을 함께 제공하여 정렬과 페이징을 동시에 처리할 수 있다.
Pageable 인터페이스는 getter는 있지만 setter는 없다. pageable 객체는 PageRequest.of(생성자) 사용하여 새로운 pageable 객체를 생성한다.
PageRequest.of 메서드의 첫번째 인자는 찾을 page, 두번째 인자는 한페이지의 size를 필수 인자로 받는다. Pageable의 page는 배열의 index 처럼 0부터 시작이기 때문에 삼항 연산자를 통하여 0보다 작은 값이 들어오면 0으로 초기화 시켜주고,사용자에게 보여지는 페이지는 1부터 시작하기 때문에 사용자가 보려는 페이지에서 -1 처리를 해준다
정보