0) 개요
- 원래 관계형 데이터베이스에서의 페이징 처리는 각 DB 모델마다 문법이 다르다
- 하지만 JPA의 Dialect가 해당 DB에 맞는 문법으로 알아서 처리해준다.
- 대표적인 예시가 바로 findAll()이다.
- 그 밖에도 findByIdBetween(pageable) 같은 여러 목록을 불러올 때도 사용가능하다.
1) Page<T>
- Page<T> 마다 해당 쿼리문대로 해당 목록을 가져오는 것이다
- 이러한 Paging 처리는 빠른 처리를 위해 아주 유용하다.
- 또한 후에 받은 데이터를 갖고 후 처리하는 count()함수 또한 볼 수 있다. → 다른 변수도 저장
PageAble pageAble = PageRequest.of(int firstPage, int endPage, Sort sort);
Page<T> page = repository.findAll(pageAble);
page.get().count(); -> 해당 page가 가져온 목록의 개수를 반환
- 이러한 페이지를 가져오기 위해서는 PageAble 이라는 인터페이스를 사용해야한다.
2) PageAble Interface
Page<T> page = repository.findAll(PageAble);
//이처럼 pagealbe을 넣어서 Page<T>객체로 반환되는 것을 볼 수 있다.
- 이러한 PageAble Interface를 사용하기 위해서는 PageRequest라는 클래스를 이용해야한다.
3) PageRequest
- PageRequest는 protected로 선언이 되어있기 때문에 new를 이용할 수 없다.
- 객체를 생성하기 위해서는 static한 of()를 이용해서 처리한다.
// 첫 페이지는 0이다.
PageAble pageAble = PageRequest.of(int firstPage, int endPage, Sort sort);
Page<T> page = repository.findAll(pageAble);
4) 정렬 - Sort