TIL/Spring

[TIL] Pageable, PageRequest - 페이지네이션

Dream COM Ddulut 2024. 12. 10. 17:56

 

페이징이란 대량의 데이터를 한 번에 처리하지 않고, 일정한 단위로 나누어 처리하는 방법이다.

이런 페이징 처리를 위해 필요한 인터페이스인 Pageable과 클래스 PageRequest를 알아보자.


 

Pageable 인터페이스

 

Pageable 인터페이스는 Spring Data JPA에서 페이징 처리를 위한 정보를 캡슐화하는 역할을 한다.

Pageable 인터페이스는 페이징 정보를 처리하기 위한 다양한 메서드를 제공한다.

int getPageNumber() 현재 페이지 번호를 반환 (0부터 시작)
int getPageSize() 한 페이지당 항목 수를 반환
long getOffset() 쿼리할 때 건너뛸 레코드 수를 반환
(페이지 번호 * 페이지 크기)

 

https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Pageable.html#getPageNumber()

 

Pageable (Spring Data Core 3.4.0 API)

isUnpaged default boolean isUnpaged() Returns whether the current Pageable does not contain pagination information. Returns:

docs.spring.io

 

 

PageRequest 클래스

 

PageRequest는 Pageable 인터페이스의 대표적인 구현 클래스이다. 

PageRequest는 또한 Serializable 인터페이스도 구현하고 있다.

 

이 클래스는 페이징 정보를 캡슐화하여 사용자가 쉽게 페이지 번호페이지 크기, 정렬 정보를 설정할 수 있도록 한다.

//생성자
PageRequest(int pageNumber, int pageSize, Sort sort)

 

사용 예시:

import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;

public class Main {
    public static void main(String[] args) {
        /*PageRequest 객체 생성(페이지 번호 1, 페이지 크기 10, name 필드 기준으로 오름차순 정렬)*/
        Pageable pageable = PageRequest.of(1, 10, Sort.by("name").ascending());

        /*Pageable 인터페이스의 메서드 사용*/
        int pageNumber = pageable.getPageNumber();
        int pageSize = pageable.getPageSize();
        long offset = pageable.getOffset();
        Sort sort = pageable.getSort();
    }
}

 

https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/PageRequest.html

 

PageRequest (Spring Data Core 3.4.0 API)

All Implemented Interfaces: Serializable, Pageable Basic Java Bean implementation of Pageable. Author: Oliver Gierke, Thomas Darimont, Anastasiia Smirnova, Mark Paluch, Thach Le See Also: Constructor Summary Constructors protected Creates a new PageRequest

docs.spring.io

 

'TIL > Spring' 카테고리의 다른 글

[TIL] Spring 의존관계 주입 방법  (0) 2024.12.11