[JPA] Page 와 Slice 인터페이스

윤재열·2022년 3월 7일
0

JPA

목록 보기
6/21
post-custom-banner

PAGE 인터페이스는 SLICE 인터페이스를 상속 받고있었다.

  • Pageable 객체를 쿼리 메소드로 전달해 쿼리에 페이징을 동적으로 추가할 수 있다.

Page인터페이스

  • page는 사용 가능한 데이터의 총 개 수 및 전체 페이지 수를 알 수 있다.

  • 총 개수를 알아내기 위해 추가적으로 카운트 쿼리가 실행된다.

  • 기본적으로 카운트 쿼리는 실제로 실행되는 쿼리에서 파생된다.

  • Pageable을 통해서 정렬을 할 수 있지만, 정렬만 하는 경우 Sort를 사용하는 것이 좋다.

  • 결과를 단순히 List로 받을 수 있다.

  • 이 경우 Page 인스턴스를 생성하기 위한 메타데이터가 생성되지 않기 때문에 카운트 쿼리가 실행되지 않는다.

  • 단순히 주어진 범위내의 엔티티를 검색하기 위한 쿼리만 실행된다.

    Slice인터페이스

  • Slice는 Page에서 카운트 쿼리에 많은 비용이 발생하는 경우에 Slice를 사용하면 된다.

  • Slice는 다음 Slice가 존재하는지 여부만 알기 때문에 전체 데이터의 셋의 크기가 큰 경우에는 - Slice를 사용하는 것이 성능상 유리하다.

페이징 관련 메서드

  • int getNumber(); //현재 페이지
  • int getSize(); //페이지 크기
  • int getTotalPages(); //전체 페이지 수
  • int getNumberOfElements(); //현재 페이지에 나올 데이터 수
  • long getTotalElements(); //전체 데이터 수
  • boolean hasPreviousPage(); //이전 페이지 여부
  • boolean isFirstPage(); //현재 페이지가 첫 페이지 인지 여부
  • boolean hasNextPage(); //다음 페이지 여부
  • boolean isLastPage(); //현재 페이지가 마지막 페이지 인지 여부
  • Pageable nextPageable(); //다음 페이지 객체, 다음 페이지가 없으면 null
  • Pageable previousPageable(); //다음 페이지 객체, 이전 페이지가 없으면 null
  • List<T> getContent(); //조회된 데이터
  • boolean hasContent(); //조회된 데이터 존재 여부
  • Sort getSort(); //정렬정보
profile
블로그 이전합니다! https://jyyoun1022.tistory.com/
post-custom-banner

0개의 댓글