목록을 정해진 개수씩 나눠 조회하는 방식
게시판이든, 이메일이든, 쇼핑 페이지든, 한 번에 특정 개수만큼만 불러오게 구현된다.
대량의 데이터를 한 번에 전부 불러오는 것은 성능 부하도 크고, 실효성도 낮다. (게시판에 수 천 개의 게시글 목록이 한 번에 보여지더라도 사용자가 느끼는 편리함은 딱히 없을 테니까)
Pagable: 어떻게 가져올지 결정PageRequest.of(페이지 번호, 개수)로 생성PageRequest.of(2, 10, Sort.by("createdAt").descending());findAll(pagable)에 넘기면 해당 페이지의 데이터만 조회JpaRepository를 상속했다면 별도 선언 없이 사용 가능pagable을 넣어주면 JPA가 알아서 처리해준다Page<Member> findByName(String name, Pageable pageable);Page<T>: 가져온 결과 데이터findAll(pagable)이 반환하는 객체getContent()를 통해 페이지의 데이터 목록을 얻을 수 있다컨트롤러 메서드
@GetMapping("/posts")
public ResponseEntity<List<String>> posts(
@RequestParam int page,
@RequestParam int size) {
return ResponseEntity.ok(postService.page(page, size));
}
서비스 메서드
@Transactional(readOnly = true)
public List<String> page(
int page,
int size) {
Pageable pageable = PageRequest.of(page, size);
Page<Post> found = postRepository.findAll(pageable);
return found.getContent().stream()
.map(Post::getTitle)
.toList();
}