예를 들어 20개의 엔티티를 5개씩 분류하고 두 번째 페이지를 달라고 요청하면 1~5/6~10/11~15/16~20번 째 엔티티가 들어 있는 집합을 1 페이지 부터 5페이지 까지 할당하고 6~10번 째 엔티티가 들어 있는 두 번째 페이지를 return한다.
순수Jpa 레포지토리
Repository 구성 모습
페이징 사용 모습
Sort.by(Sort.Direction.DESC, "username")
을 파리미터로 넘겨 정렬 기준을 설정해 주었다.page.getContent()
: 페이지 내 실제 엔티티를 returnpage.getTotalElements()
: 페이지 내 총 엔티티 수page.getTotalPages()
: 페이지 내 총 페이지 수page.isFirst()
: 현재 페이지가 첫 번째 페이지 인지 확인page.hasNext()
: 다음 페이지 유무 확인스프링 데이터 JPA의 페이징 사용 시 Page가 1이 아닌 0부터 시작임을 유의해야한다!!
Page를 사용하게 되면 totalCount를 구해야 하므로 필요한 데이터를 받는 것 외에도 비용이 든다. 만약 totalCount가 필요하지 않은 상황이라면 Slice를 사용하여 totalCount를 구하지 않고 필요한 데이터만 요청할 수 있다.