728x90
데이터를 조회할 때 pagination을 사용해야하는 경우가 있습니다. 전형적인 pagination에서는 데이터의 전체 건수가 필요합니다. 현재 조회하고 있는 데이터가 몇 번째 페이지에 속한 데이터인지 알 수 있어야하기 때문입니다. 그런데 모바일 환경에서는 무한스크롤방식의 UXUI가 많아지면서 전체 데이터 건수는 필요없는 경우가 있습니다.
Spring에서는 아래와 같이 Count 조회를 하지 않는 Slice와 Count 조회를 하는 Page를 구분해서 제공하고 있습니다.
public interface Page<T> extends Slice<T> {
int getTotalPages();
long getTotalElements();
}
Slice는 다음 페이지의 존재 여부를 확인하기 위해, 요청받은 데이터 조회 건수 + 1개를 조회합니다.
N+1개만큼 데이터가 조회됐다면 다음 페이지가 있는 것이고, 사용자에게는 N개만 보여주는 방식을 사용합니다.
이렇게 하면 다음 페이지의 존재 여부를 확인하기 위해서, 데이터가 없을 때까지 조회해봐야하는 상황을 피할 수 있습니다
728x90
'DEV > Spring Data JPA' 카테고리의 다른 글
Page<Entity>를 API의 응답으로 리턴하는 방법 (0) | 2023.09.24 |
---|---|
Join과 Pagination 함께 사용할 때 Count 쿼리 최적화 (0) | 2023.09.24 |
데이터 조회의 반환값 T vs Optional<T> (0) | 2023.09.24 |
메서드 이름으로 데이터 조회하기 vs JPQL 직접 작성해서 데이터 조회하기 (0) | 2023.09.24 |
getOne vs findById (0) | 2023.09.24 |