Paging

aiden·2024년 1월 21일
0

점프 투 스트링부트

목록 보기
22/22
post-custom-banner

Paging

모든 데이터가 한 페이지에 표시되도록 설계해서는 안된다. 페이징을 통해 한 페이지당 보이는 데이터의 양을 제한할 것이다.
이 때, 라이브러리를 추가로 설치하지 않고 이미 설치해두었던 JPA 관련 라이브러리를 사용한다.
Spring Data 프레임워크에서 제공하는 페이징 관련 클래스로는 다음과 같은 클래스가 있다.

  • org.springframework.data.domain.Page: 페이징을 위한 클래스.
  • org.springframework.data.domain.PageRequest: 페이징 요청을 하는 클래스. 한 페이지에 보여 줄 게시물 개수 설정 등 옵션을 걸어 요청할 수 있다.
  • org.springframework.data.domain.Pageable: 페이징을 처리하는 인터페이스.

Page

Page 클래스는 특정 페이지에 포함된 데이터와 페이징 관련 정보를 담고 있는 클래스이다. 대표적으로 다음과 같은 메서드가 존재한다.

  • getContent() : 해당 페이지에 포함된 데이터를 리턴. 일반적으로 데이터는 List 형태로 반환 된다.
  • getTotalElements() : 전체 데이터의 개수 리턴
  • getTotalPages() : 전체 페이지 수 리턴
  • getNumber() : 현재 페이지의 인덱스 번호를 반환. 페이지 인덱스는 0부터 시작
  • getSize() : 한 페이지에 포함된 항목의 개수를 반환
  • getSort() : 페이지 내 항목의 정렬 순서를 반환. Sort 객체로 반환되며, 정렬 기준을 확인할 수 있다.

Pageable

Pageable 인터페이스는 페이징 처리를 위한 정보를 담고 있는 인터페이스이다. Pageable 인터페이스를 구현한 클래스로는 PageRequest가 있다. Pageable 인터페이스에는 다음과 같은 메서드가 존재한다.

  • getPageNumber(): 조회할 페이지 번호를 반환. 0부터 시작
  • getPageSize(): 한 페이지에 포함될 항목의 개수를 반환
  • getOffset(): 조회할 페이지의 시작 위치를 반환
  • getSort(): 페이지 내 항목의 정렬 순서를 반환

Pageable 인터페이스는 데이터를 조회하는 메서드에 Pageable 객체를 인자로 전달하여 페이징 처리를 할 수 있도록 한다. 다음 예시와 같이 사용할 수 있다.

Pageable pageable = PageRequest.of(0, 10); // 첫 번째 페이지, 페이지당 10개의 항목
Page<User> userPage = userRepository.findAll(pageable);
List<User> userList = userPage.getContent(); // 페이지에 포함된 User 데이터 리스트

PageRequest 객체를 사용하여 Pageable 인터페이스를 구현한 객체를 생성한 후, userRepository.findAll() 메서드에 전달하여 첫 번째 페이지의 10개 User 데이터를 조회한 예시이다.

PagePageable을 함께 사용하면 데이터를 효과적으로 페이징하여 처리할 수 있다.

PageRequest

페이징 처리를 위한 정보를 담고 있으며, 데이터를 조회할 때 사용되는 메서드들에게 정보를 전달하여 특정 페이지의 데이터를 가져올 수 있다.

PageRequest 클래스의 주요 속성과 생성자는 다음과 같다.

  • page: 가져올 페이지의 번호. 0부터 시작하며, 기본값은 0이다.
  • size: 한 페이지에 포함될 항목의 개수. 기본값은 20이다.
  • sort: 페이지 내 항목의 정렬 순서를 지정. Sort 객체를 사용하여 정렬 기준을 설정할 수 있다.

PageRequest 객체를 생성하기 위해 다음과 같은 생성자를 사용할 수 있다.

  • PageRequest.of(int page, int size): 기본 생성자로, pagesize 값을 인자로 받아 PageRequest 객체를 생성한다.
  • PageRequest.of(int page, int size, Sort sort): 정렬 기준을 추가로 지정하여 PageRequest 객체를 생성한다.
profile
파인애플 좋아하세요?
post-custom-banner

0개의 댓글