Spring Data JPA의 Page 객체

song yuheon·2023년 9월 6일
0

Spring

목록 보기
60/93
post-thumbnail

페이징은 웹 어플리케이션에서 자주 사용되는 기능 중 하나이다. 데이터의 양이 많을 경우, 한 번에 모든 데이터를 표시하기보다는 페이지별로 나누어 보여주는 것이 사용자 경험에 더 유리하다. Spring Data JPA는 이런 페이징 처리를 간편하게 도와주는 Page 객체와 관련 인터페이스들을 제공한다.


1. Page와 Pageable의 기본 개념


Pageable
페이징 정보(페이지 번호, 페이지 크기, 정렬 방식 등)를 담고 있는 인터페이스. Spring Data JPA에서 제공하는 PageRequest 클래스를 통해 쉽게 인스턴스화 할 수 있다.

Page
데이터와 함께 페이징 정보(전체 페이지 수, 전체 데이터 수, 현재 페이지 번호 등)를 제공하는 인터페이스. Page 객체는 일반적으로 Repository의 조회 메서드에서 Pageable 객체를 파라미터로 받아 결과로 반환될 때 사용된다.

Pageable pageable = PageRequest.of(page, size, sort);

위 코드는 PageRequest.of() 메서드를 사용하여 Pageable 객체를 생성하는 예시다. 여기서 page는 페이지 번호, size는 한 페이지에 표시될 데이터의 개수, 그리고 sort는 정렬 방식을 나타낸다.


2. Page 객체의 구조와 동작 방식


Page 객체는 데이터를 리스트 형태로 갖고 있다. 이 리스트는 해당 페이지에 표시될 데이터의 목록을 의미한다.

Page 객체의 주요 메서드들

  • getContent(): 현재 페이지의 데이터 목록을 반환한다.
  • getTotalPages(): 전체 페이지 수를 반환한다.
  • getTotalElements(): 전체 데이터 수를 반환한다.
  • getNumber(): 현재 페이지 번호를 반환한다.

3. 정렬과 Pageable


정렬은 데이터를 원하는 순서대로 나열하는 것을 말한다. Sort 객체를 사용하면 데이터의 정렬 방식을 지정할 수 있다. 이를 Pageable 객체 생성 시 함께 지정함으로써, 원하는 정렬 방식에 따라 페이징 처리된 데이터를 얻을 수 있다.

Sort.Direction direction = isAsc ? Sort.Direction.ASC : Sort.Direction.DESC;
Sort sort = Sort.by(direction, sortBy);
Pageable pageable = PageRequest.of(page, size, sort);

위 코드에서 isAsc는 오름차순 정렬인지 여부를 나타내는 변수이다. sortBy는 어떤 속성을 기준으로 정렬할지 나타낸다.


4. 페이지 번호와 표시되는 데이터


페이지 번호는 0부터 시작한다. 따라서 page=2size=3이면, 이는 세 번째 페이지에서 세 개의 항목을 가져오라는 의미가 된다. 이 경우, 정렬된 데이터 중 4번째, 5번째, 6번째 항목이 해당 페이지에 표시된다.


Spring Data JPA의 PagePageable은 페이징 처리를 쉽고 효과적으로 구현하게 도와준다. 사용법과 동작 원리를 이해하면 웹 애플리케이션에서의 데이터 표시와 사용자 경험을 크게 향상시킬 수 있다.


profile
backend_Devloper

0개의 댓글