JPAでのSliceとPageの違い

7096 ワード

Page
package org.springframework.data.domain;

import org.springframework.core.convert.converter.Converter;

public interface Page<T> extends Slice<T> {
    int getTotalPages();

    long getTotalElements();

    <S> Page<S> map(Converter<? super T, ? extends S> var1);
}

Slice

import java.util.List;
import org.springframework.core.convert.converter.Converter;

public interface Slice<T> extends Iterable<T> {
    int getNumber();

    int getSize();

    int getNumberOfElements();

    List<T> getContent();

    boolean hasContent();

    Sort getSort();

    boolean isFirst();

    boolean isLast();

    boolean hasNext();

    boolean hasPrevious();

    Pageable nextPageable();

    Pageable previousPageable();

    <S> Slice<S> map(Converter<? super T, ? extends S> var1);
}


(1)PageはSliceを継承している.
(2)Pageは,ページング中のすべての結果,現在のページへのデータを取得し,上のpreviousPageable()メソッドにより,前のページとnextPageable()で後のページのデータを取得することができる.だから上の方法はすべて現在のページに対して言ったのです;
(3)Pageはすべてのレコードを取得する数とページの総数を実現しているが,count queryによって計算されるため,データソースが大きいと劣勢を示す.しかし、Sliceはいくつかの操作をするときに、すべての記録数を一度計算する必要はありません.