Practice/Java

스프링) JPA 페이징 처리 개념 및 활용방법.

밍미a 2023. 2. 15. 18:21
728x90

개념

페이징은 사용자가 어떠한 데이터를 필요로 할 때, 전체 데이터 중의 일부를 보여주는 방식이다.

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개의 파라미터를 받을 수 있다.

  1. int page: 조회할 페이지 번호 (0부터 시작)
  2. int size: 한 페이지당 조회할 데이터 개수
  3. Sort sort: 정렬 기준

왜 페이징처리를 해야하는걸까?

https://lemeraldl.tistory.com/entry/%ED%8E%98%EC%9D%B4%EC%A7%95-%EC%B2%98%EB%A6%AC%EB%A5%BC-%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0

 

페이징 처리를 하는 이유

페이징이라는건 주로 게시판 목록에서 하단에 존재하는 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