Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- C programming
- stream
- list 컬렉션
- s
- Serialization
- 혼자 공부하는 C언어
- 이것이 자바다
- insertion sort
- JSON
- coding test
- 이스케이프 문자
- 윤성우 열혈자료구조
- R
- buffer
- Algorithm
- 윤성우의 열혈 자료구조
- Stack
- Selection Sorting
- C 언어 코딩 도장
- 메모리구조
- Graph
- 알기쉬운 알고리즘
- datastructure
Archives
- Today
- Total
Engineering Note
[Server] Pageable과 Page<E> 타입 본문
Spring Data JPA를 이용해서 별도의 코드 없이도 CRUD가 실행 가능하다는 사실도 멋지지만, 개발자들에게는 개발 속도를 빠르게 하는 페이징 처리는 정말 매력적인 기능입니다.
페이징 처리는 Pageable이라는 타입의 객체를 구성해서 파라미터로 전달하면 됩니다. Pageable은 인터페이스로 설계되어 있고, 일반적으로는 PageRequest.of()라는 기능을 이용해서 개발이 가능합니다.
- PageRequest.of(페이지 번호, 사이즈): 페이지 번호 0 부터
- PageRequest.of(페이지 번호, 사이즈, Sort): 정렬 조건 추가
- PageRequest.of(페이지 번호, 사이즈, Sort.Direction, 속성): 정렬 방향과 여러 속성 지정
파라미터로 Pageable을 이용하면 리턴 타입은 Page<T> 타입을 이용할 수 있는데 이는 단순 목록뿐 아니라 페이징 처리에 데이터가 많은 경우에는 count 처리를 자동으로 실행합니다. 대부분의 Pageable 파라미터는 메서드 마지막에 사용하고, 파라미터에 Pageable이 있는 경우에는 메서드의 리턴 타입을 Page<T> 타입으로 설계합니다.
@Test
public void testPaging(){
//1 page order by bno desc
Pageable pageable = PageRequest.of(0,10, Sort.by("bno").descending());
Page<Board> result = boardRepository.findAll(pageable);
}
findAll()의 리턴 타입으로 나오는 Page<T> 타입은 내부적으로 페이징 처리에 필요한 여러 정보를 처리합니다. 예를 들어 다음 페이지가 존재하는지, 이전 페이지가 존재하는지, 전체 데이터의 개수는 몇 개 인지 등의 기능들을 모두 알아낼 수 있습니다.
Page<Board> result = boardRepository.findAll(pageable);
log.info("total count: " + result.getTotalElements());
log.info("total pages: " + result.getTotalPages());
log.info("page number: " + result.getNumber());
log.info("page size: " + result.getSize());
List<Board> todoList = result.getContent();
todoList.forEach(board -> log.info(board));
참고 자료: 자바 웹 개발 워크북
'Server' 카테고리의 다른 글
[Server] QueryDSL, Spring Boot 핵심 라이브러리 정리 (0) | 2025.10.07 |
---|---|
[Spring] BindingResult (0) | 2025.09.22 |
[Server] 리버스 프록시(Reverse Proxy)란? (0) | 2025.09.20 |
[Server] Pagination 개념과 Pagination 에서 사용되는 용어, 페이지 시작 번호계산 방법 (0) | 2025.09.17 |
[Server] Spring Boot3 Security 적용 방법 (0) | 2025.09.12 |
Comments