Spring Data JPA의 Paging

이원찬·2023년 12월 8일
0

Spring

목록 보기
2/13

JPA에서는 Pagination 을 위해 두가지 인터페이스를 제공한다.

  1. Pageable
  2. Slice

위 두가지 인터페이스에 대해 설명한다.

Pabeable

Package org.springframework.data.domain
에 포함된 인터페이스로 PageRequest라는 구현체가 따로 존재 한다.

Pageable pageable = PageRequest.of(1,10);

1_page의 10개의 사이즈를 가진다는 뜻

또한 JPARepository에서 pagealbe 인자를 넘겨주는 메소드를 오버라이딩 하면 Page 또는 Slice 객체로 리턴 받을 수 있다.

public interface MyRepository extends JPARepository<My, Long>{
		Page<My> findPageAll(Pageable pageable);
        Slice<My> findSliceAll(Pageable pageable);
}

그렇다면 차이는?

Slice

Slice 객체의 메서드 들을 살펴보자

  • 데이터를 가져오거나
  • 페이지 정보, 다음 페이지가 있는지 등...
    을 가지고 있다.

Slice객체를 이용하여 무한 페이지 구현시 이용하면 매우 편할 것 같다.

Page

Page는 Slice 를 상속받는 객체이다.

따라서 위 Slice 객체의 모든 메서드를 사용 가능하며

추가로

전체 데이터에 대한 정보를 가지고 있다.

실제로 날라가는 쿼리문을 보면 Count쿼리를 날려 전체 데이터를 관리하는 것을 알 수있다.

select
    count(member0_.member_id) as col_0_0_ 
from
    member member0_
    ```

참고자료

https://velog.io/@dltkdgns3435/SpringBoot-Spring-Data-JPA-%EC%97%90%EC%84%9C-Page%EC%99%80-Slice
https://colour-my-memories-blue.tistory.com/10
https://wimoney.tistory.com/entry/SpringDataJPA-%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9D%B8-%ED%8E%98%EC%9D%B4%EC%A7%95%EC%9D%84-%EC%9C%84%ED%95%9C-Pageable-Slice-%EB%B6%84%EC%84%9D

profile
소통과 기록이 무기(Weapon)인 개발자

0개의 댓글