본문으로 바로가기

Page<T> 와 Slice<T>

category KOTLIN/SOURCECODE 2025. 2. 5. 10:40
interface Page<T> : Slice<T> {
    val totalElements: Long        // 전체 데이터 개수
    val totalPages: Int           // 전체 페이지 수
    val number: Int              // 현재 페이지 번호
    val numberOfElements: Int    // 현재 페이지의 데이터 개수
    val content: List<T>        // 실제 데이터
    val sort: Sort             // 정렬 정보
}
interface Slice<T> {
    val content: List<T>         // 실제 데이터
    val number: Int             // 현재 페이지 번호
    val size: Int              // 요청한 페이지 크기
    val sort: Sort            // 정렬 정보
    val hasNext: Boolean     // 다음 페이지 존재 여부
}

Page<T> 는 페이지의 모든 정보를 보여주고 있고, Slice<T> 는 다음 페이지 존재 여부만 알려주고 있다. 
Page<T> 는 추가로 COUNT 쿼리를 실행한다. 

  • Page 사용:
    • 전통적인 페이지네이션 UI (1,2,3,... 페이지 번호)
    • 총 데이터/페이지 수가 필요한 경우
  • Slice 사용:
    • 무한 스크롤
    • "더보기" 버튼
    • 대용량 데이터 처리
    • 성능이 중요한 경우