[Section3] Spring MVC - JDBC 기반 데이터 액세스 실습
2023. 6. 21. 01:41
🧑🏻💻 TIL(Today I Learned)
✔️ 페이지네이션(Pagination) 구현하기
💡 페이지네이션(Pagination)
➡️ 데이터 베이스에 회원 정보가 100건이 저장되어 있는데 클라이언트 쪽에서 100건의 데이터를 다 요청하는 것이 아니라 한 페이지에 일정 개수만큼만 나누어서 달라고 요청하는 것
➡️ 즉 page 번호가 1 이고 페이지에 포함되는 데이터의 개수가 10건일 경우, 데이터베이스 테이블에서는 1 row 부터 10 row 까지만 조회되어야 함
➡️ 하지만 위와 같이 조회를 하면 가장 오래된 데이터부터 10건씩 조회되기 때문에 일반적으로 테이블의 row를 역순으로 10건씩 가져와서 최신 데이터부터 조회하는 경우가 많음
🔎 Pageable
➡️ Pagination을 개발자가 직접 구현해서 사용할 수 도 있으나 Spring에서 지원하는 Pagiable API를 사용하여 구현할 수도 있음
➡️ 페이지 처리에 필요한 정보를 담게 되는 인터페이스
🔎 Page
➡️ 페이지 정보를 담게 되는 인터페이스, Slice를 상속, 페이징 처리된 결과를 포함하는 객체
➡️ 전체 데이터 개수, 전체 페이지 개수 등 계산
➡️ 게시판 페이지네이션 UI 구현할 때 적합
🔎 처리 순서
- PageRequest에 의해 Pageable에 페이징 정보가 담겨 객체화
- Pageable이 CrudRepository가 상속된 인터페이스의 메서드에 파라미터로 전달됨
- 2번 메서드 리턴으로 Page<T> 전달
- 전달된 Page<T>에 담겨진 Page 정보를 바탕으로 로직을 처리하면 됨
PageRequest
: Pageable 인터페이스의 구현체 , 페이지 번호와 단일 페이지 개수를 담을 수 있음
: 첫 번째 파라미터는 페이지 순서, 두 번째 파라미터는 단일 페이지 크기 (⭐️ 페이지 순서는 0부터 시작함!)PageRequest page = PageRequest.of(0, 10);
'SEB_BE_45 > 공부 정리' 카테고리의 다른 글
[Section3] Spring MVC - 트랜잭션(Transaction) (0) | 2023.06.26 |
---|---|
[Section3] Spring MVC - JPA 기반 액세스 계층 (0) | 2023.06.21 |
[Section3] Spring MVC - 비즈니스 로직에 대한 예외처리 (0) | 2023.06.15 |
[Sectoion3] Spring MVC - 예외 처리 (0) | 2023.06.14 |
[Section3] Spring MVC - 서비스 계층 (0) | 2023.06.13 |