JPA中Slice和Page的區別

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在做某些操作的時候並不需要把所有的記錄數都計算一次!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章