>페이지네이션
: 저장된 데이터를 모두 요청하는 것이 아닌 단위별로 나누어 요청하는 것
: 페이지를 한 단위로 한다.
>페이지네이션 요청
-?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의 활용에 더 집중하자.
'코드스테이츠_국비교육 > [Section3]' 카테고리의 다른 글
49.02_[Spring MVC] JPA 기반 데이터 액세스 계층_엔티티 매핑(미완)_22.11.01 (0) | 2022.11.02 |
---|---|
49.01_[Spring MVC] JPA 기반 데이터 액세스 계층_개요(미완)_22.11.01 (0) | 2022.11.02 |
48.01_[Spring MVC] Spring Data JDBC_정리_22.10.31 (0) | 2022.10.31 |
47.03_[Spring MVC] Spring Data JDBC_서비스 및 레포지토리 구현_22.10.28 (0) | 2022.10.30 |
47.02_[Spring MVC] Spring Data JDBC_도메인 엔티티 클래스 정의_22.10.28 (0) | 2022.10.30 |