오늘은 Part 2. 게시판 서비스 강의의 `게시판 페이지 기능 구현 2` 부분을 학습하였다.
게시판 기본 조회 화면을 위한 컨트롤러를 구현하고 데이터 전달을 완료하였다.
게시판 페이지 기본 정렬 속성을 부여하였는데 1페이지당 10개, 시간 내림차순으로 해주었다.
@GetMapping
public String articles(
@RequestParam(required = false)SearchType searchType,
@RequestParam(required = false)String searchValue,
@PageableDefault(size=10,sort="createdAt",direction = Sort.Direction.DESC) Pageable pageable,
ModelMap map
){
map.addAttribute("articles", articleService.searchArticles(searchType,searchValue,pageable).map(ArticleResponse::from));
return "articles/index";
}
페이지네이션
한 번에 모든 데이터를 요청하는게 아니라 사용자가 볼 만큼만 서버에 요청하면서 서버에 부하를 줄이도록 하는 기술
스프링 데이터 JPA는 쿼리 메소드에 페이징과 정렬 기능을 사용할 수 있도록 2가지 파라미터를 제공한다.
- org.springframework.data.domain.Sort : 정렬 기능
- org.springframework.data.domain.Pageable : 페이징 기능(내부에 sort 포함)
Pageable
Pageable은 인터페이스이므로 실제로 사용할 때에는 엔터페이스를 구현한 PageRequest 객체를 사용한다.
PageRequest 생성자의 파라미터는 현재 페이지, 조회할 데이터 수, 정렬 정보를 파라미터로 사용할 수 있다.
@PageableDefault
Pageable 객체 앞에 @PageableDefault 애노테이션을 붙이면 size, sort, direction 등 기본값을 설정할 수 있다.