Developer N
[JPA] Pageable을 활용한 Pagination 본문
728x90
Pagination
- 많은 글을 페이지를 나눠 쪽수별로 제공
- 정렬방식, 우선순위, 몇번째 페이지, 페이지 크기등 요청에 따라 정보 전달
Pageable
- JPA에서 Pagination을 편하게 사용할 수 있도록 만든 객체
- ‘page=3&size=10&sort=id,DESC’ 형식의 QueryParameter를 추가로 요청시 쉽게 원하는 형식의 데이터 얻을 수 있음
@PageDefault 어노테이션
- 기존의 Pageable 객체 앞에 @PageDefault 어노테이션을 붙여주고 괄호 안에 기본값 설정 진행
- DefaultPage vs FallbackPage
- DefaultPage
- 개발자가 정한 기본 Page의 형식. 별도로 어노테이션(@PageDefault)을 통해 설정해주지 않으면 FallbackPage의 설정으로 실행
- FallbackPage
- 적합한 방식이 없는 경우, 만일을 대비해 만들어둔 설정
- DefaultPage
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/
728x90
'STUDY > JAVA | SPRING' 카테고리의 다른 글
[Java] 로깅(logging) 사용 방법 (0) | 2023.02.27 |
---|---|
[Java] HttpServletRequest 사용하여 주소 정보 가져오기 (0) | 2023.02.24 |
[Spring] ResponseEntity(HttpStatus) (0) | 2023.02.21 |
[JPA] JPA 사용법 (0) | 2023.02.21 |
[JPA] JPA(Java Persistence API)란? (0) | 2023.02.21 |
Comments