- Pagable을 하면 필수적으로 count query를 만들므로, 때로는 성능상 손해가 된다.
- Spring Data JPA에서 제공하는 Slice 인터페이스를 사용하면 된다.. 이 방법을 사용하면 카운트 쿼리 없이 페이징을 구현할 수 있습니다.
- UI에서 "다음" 버튼만 제공하고 전체 페이지 네비게이션을 표시하지 않는 경우에 적합합니다.
// Repository
public Slice<TodoEntity> listAll(Pageable pageable) {
return todoRepository.listAll(pageable);
}
- 첫페이지 또는 마지막 페이지 여부를 간접적으로 알수 있다.
1. hasNext() 메소드:
slice.hasNext()가 false를 반환하면, 현재 페이지가 마지막 페이지
이 메소드는 요청한 페이지 크기보다 하나 더 많은 엔티티를 조회하여 다음 페이지의 존재 여부를 확인
2. isLast() 메소드:
slice.isLast()가 true를 반환하면, 현재 페이지가 마지막 페이지
이는 !slice.hasNext()와 동일한 결과를 제공
3. 추가적인 유용한 메소드들:
isFirst(): 현재 페이지가 첫 번째 페이지인지 확인
getNumber(): 현재 페이지 번호 반환
getSize(): 페이지 크기 반환
getNumberOfElements(): 현재 페이지에 포함된 요소의 수 반환
UI 구현 시 고려사항:
"다음" 버튼: hasNext()가 true일 때만 표시
"이전" 버튼: isFirst()가 false일 때 표시
현재 페이지 정보: getNumber() + 1을 사용하여 표시 (페이지 번호는 0부터 시작)
'개발' 카테고리의 다른 글
PHP의 Google Analytics Data API (GA4) 에서 여러개 필터 쓰기 (0) | 2023.08.03 |
---|---|
스니펫(js) (0) | 2023.04.05 |
jetbrains ide에서 (webstorm, phpstorm 등등) react-router-dom의 자동완성이 안될 때 (0) | 2023.01.19 |
그누보드 Hook 리스트(run_event & run_replace) (0) | 2022.12.12 |
centos 에서 php82 + nginx + codeigniter 설정 (2) | 2022.11.21 |