Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Developer N

[JPA] Pageable을 활용한 Pagination 본문

STUDY/JAVA | SPRING

[JPA] Pageable을 활용한 Pagination

nnh 2023. 2. 21. 15:35
728x90

Pagination

  • 많은 글을 페이지를 나눠 쪽수별로 제공
  • 정렬방식, 우선순위, 몇번째 페이지, 페이지 크기등 요청에 따라 정보 전달

 

Pageable

  • JPA에서 Pagination을 편하게 사용할 수 있도록 만든 객체
  • ‘page=3&size=10&sort=id,DESC’ 형식의 QueryParameter를 추가로 요청시 쉽게 원하는 형식의 데이터 얻을 수 있음

 

@PageDefault 어노테이션

  • 기존의 Pageable 객체 앞에 @PageDefault 어노테이션을 붙여주고 괄호 안에 기본값 설정 진행
  • DefaultPage vs FallbackPage
    • DefaultPage
      • 개발자가 정한 기본 Page의 형식. 별도로 어노테이션(@PageDefault)을 통해 설정해주지 않으면 FallbackPage의 설정으로 실행
    • FallbackPage
      • 적합한 방식이 없는 경우, 만일을 대비해 만들어둔 설정

 

Pagination 관련 설정을 제외한 요청을 보냈을 때, Page의 설정을 수정하는 3가지 방법

  • 1) @PageDefault 어노테이션 사용 → DefaultPage 정의
  • 2) application-properties에 별도로 ‘spring.data.web.pageable.default-page-size=100’과 같은 설정 추가
    • → Bean 등록시 FallbackPage의 설정 수정 (이와 별개로 Bean을 구성하는 다른 설정들도 수정 가능)
  • 3) CustomPageableConfiguration 에서 설정 진행
    • 2번에서는 application-properties에서 설정을 진행했다면, 이 방법에서는 동일한 설정을 java 코드에서 진행
    • → 마찬가지로 Bean 등록시 FallbackPage의 설정 수정 (이와 별개로 Bean을 구성하는 다른 설정들도 수정 가능)
  • 3가지를 동시에 진행할 경우 우선순위
    • 첫번째 우선 순위는 1) @PageDefault 어노테이션
    • 두번째 우선 순위는 3) CustomPageableConfiguration
      • PageableHandlerMethodArgumentResolverCustomizer Bean을 생성하게 되면 @ConditionalOnMissingBean 설정에 따라 2번 로직은 실행되지 않음

 

 

참고)

https://tecoble.techcourse.co.kr/post/2021-08-15-pageable/

 

Pageable을 이용한 Pagination을 처리하는 다양한 방법

Spring Data JPA에서 Pageable 를 활용한 Pagination 의 개념과 방법을 알아본다.

tecoble.techcourse.co.kr

 

728x90
Comments