개념
페이징은 사용자가 어떠한 데이터를 필요로 할 때, 전체 데이터 중의 일부를 보여주는 방식이다.
JPA 에서는 데이터베이스에서 조회한 결과를 페이지 단위로 나누어 처리할 수있도록 도와주는 page<T>객체로 페이징을 처리한다.
public interface RecommendCourseBoardRepository extends JpaRepository<RecommendCourseBoard,Long> {
@Query("select rb from RecommendCourseBoard rb where rb.postStatus =:postStatusEnum")
Page<RecommendCourseBoard> findAllBySatusIsVailable(Pageable pageable, PostStatusEnum postStatusEnum);
}
JPA를 상속받은 레파지토리에서
page타입의 <>안에 엔티티를 넣어주고 파라미터로 Pageable 객체를 전달해준다.
public PageResponseDto<List<RecommendResponseDto>> allRecommendCourseBoard(int offset, int limit){
PageRequest pageRequest = PageRequest.of(offset, limit);
Page<RecommendCourseBoard> all = recommendCourseBoardRepository.findAllBySatusIsVailable(pageRequest, PostStatusEnum.VAILABLE);
서비스 부분에서
offset 과 limit 파라미터를 받아와서 서비스단에서
PageRequest 객체에 of를 이용해 받아온 데이터를 pageRequest 생성을 해서 레파지토리로 보내준다.
이때, PageRequest 는 3개의 파라미터를 받을 수 있다.
- int page: 조회할 페이지 번호 (0부터 시작)
- int size: 한 페이지당 조회할 데이터 개수
- Sort sort: 정렬 기준
왜 페이징처리를 해야하는걸까?
페이징 처리를 하는 이유
페이징이라는건 주로 게시판 목록에서 하단에 존재하는 1 ~ 10, 11 ~ 20과 같이 각 페이지를 볼 수 있게하는 기능을 말합니다.이런 기능이 필요한 이유가 뭘까요? 먼저 한 목록에 모든 페이지가 나
lemeraldl.tistory.com
참고자료
https://congsong.tistory.com/26
스프링 부트(Spring Boot) - 페이징(Paging) 처리하기 [개발을 시작해봐요!]
해당 포스팅에서 화면 처리는 JSP가 아닌 타임리프(Thymeleaf) 템플릿 엔진(이하 타임리프)을 사용합니다. 본 포스팅은 단계별(step by step)로 진행되니, 이전 단계를 진행하시는 것을 권장드립니다.
congsong.tistory.com
https://ldevlog.tistory.com/11
[Spring-Boot] JPA를 활용하여 게시판 페이징 처리 하기
저번 포스팅에서 간단하게 CRUD만을 활용해 게시판을 구현해 보았다 이번에는 JPA에서 제공해주는 매우 쉽고 편한 페이징 처리를 해볼려고 한다 저번에 만들어 두었던 게시판을 활용해도 좋고 새
ldevlog.tistory.com
'Practice > Java' 카테고리의 다른 글
| 테스트코드 공부 1 (0) | 2023.03.06 |
|---|---|
| 스프링) 의존성 주입 (0) | 2023.02.16 |
| 스프링) 빌더 패턴 (1) | 2023.01.17 |
| 스프링)시큐리티 (0) | 2022.12.30 |
| 스프링) @Transactional 정리 (0) | 2022.12.19 |