코드스테이츠_국비교육/[Section3]

48.02_[Spring MVC] Spring Data JDBC_Pagination API_22.10.31

생각없이 해도 생각보다 좋다. 2022. 10. 31. 22:18

>페이지네이션

: 저장된 데이터를 모두 요청하는 것이 아닌 단위별로 나누어 요청하는 것

: 페이지를 한 단위로 한다.

 

>페이지네이션 요청

-?page=1&size=10

: 원하는 page 와 한 page에  몇 개의 데이터를 볼 것인지에 대한 정보 size 를 쿼리로 요청한다.

: 해당 쿼리문은 모든 정보를 10개로 나눈 후 1번 page를 요청하는 것이다.

 

>구현 과정

1. Controller 수정

-getMembers 핸들러 메서드

: List<memberResponseDto>와 pageInfo를 응답 메세지로 하는 Dto를 반환한다.

: 쿼리 파라미터를 매개변수로 삼는다.

: Spring 에서 제공하는 pagination 관련 Api를 사용하여 쿼리 파라미터를 받아 pageInfo, service 로 정보를 넘긴다.

 

2. Entity 객체 생성

-PageInfo

: Page에 대한 정보를 담을 entity 객체 생성

: page(현재 페이지 번호), size(한 페이지 당 데이터 갯수), totalElement(전체 데이터 갯수), totalPages(전체 페이지 수)

 

3. ResponseDto 객체 생성

-MemberResponseForPageDto

: Controller 의 getMembers 핸들러 메서드의 반환값으로 주어질 응답 메세지 구성 내용 객체

: List<memberResponseDto>와 pageInfo로 구성

 

4. Repository 추상 메서드 구현

-반환형; Page<T>

: Page 정보를 담는 참조형으로 데이터를 받기 위함.

-쿼리메서드; findAllByOrderByMemberIdDesc

findAll : 모든 데이터를 요청

By : 범위 판단식 구분자

OrderBy ~ Desc : 역순으로 데이터를 정렬

MemberId : 원하는 데이터의 컬럼명

-Pageable

: Pagination API 를 사용하기 위한 인터페이스

: 객체의 정보를 페이지 정보와 함께 제공하기 위함

 

5. Service 클래스 기능 추가

-findMembers

: PageRequest와 repository 에서 구현한 쿼리 메서드 활용

 

//왜 쓰고, 어떤 식으로 쓰는지만 이해하고 넘어가자 JPA의 활용에 더 집중하자.