[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를 사용하여 구현할 수도 있음 

➡️ 페이지 처리에 필요한 정보를 담게 되는 인터페이스

Pageable 인터페이스

(참고 : https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Pageable.html)

 

 

🔎  Page

Page 인터페이스

➡️ 페이지 정보를 담게 되는 인터페이스, Slice를 상속, 페이징 처리된 결과를 포함하는 객체

➡️ 전체 데이터 개수, 전체 페이지 개수 등 계산 

➡️ 게시판 페이지네이션 UI 구현할 때 적합 

 

 

🔎 처리 순서

  1.  PageRequest에 의해 Pageable에 페이징 정보가 담겨 객체화
  2. Pageable이 CrudRepository가 상속된 인터페이스의 메서드에 파라미터로 전달됨
  3. 2번 메서드 리턴으로 Page<T> 전달
  4. 전달된 Page<T>에 담겨진 Page 정보를 바탕으로 로직을 처리하면 됨 
PageRequest
: Pageable 인터페이스의 구현체 , 페이지 번호와 단일 페이지 개수를 담을 수 있음 
PageRequest page = PageRequest.of(0, 10);​
: 첫 번째 파라미터는 페이지 순서, 두 번째 파라미터는 단일 페이지 크기 (⭐️ 페이지 순서는 0부터 시작함!)

 

BELATED ARTICLES

more