Pageable

Pageable

  • query string으로 page, size 정보가 들어왔을 때, controller에서 입력 파라미터로 사용 가능

  • sort 객체를 입력 파라미터로 받거나 Direction 객체와 함께 properties를 입력받으면 정렬 기능도 수행해준다.

  • 구성 요소

    • page : 요청할 페이지 번호

    • size : 한 페이지 당 조회 할 갯수 (default : 20)

    • sort : Sorting에 대한 값 설정하는 파라미터로, 기본적으로 오름차순이다. 표기는 정렬한 필드명,정렬기준 ex) createdDate,desc

  • PageRequest는 Pageable 인터페이스의 구현체이며, 직접 Pageable 객체를 생성해줄 때 사용할 수 있다.

    • PageRequst.of(page, size)

    • PageRequst.of(page, size, sort)

    • PageRequest.of(page,vsize, direction, "property1", "property2", ..)

Slice

Page

  • Slice 인터페이스를 상속받은 인터페이스

  • 전체 데이터 개수를 조회해 가지고 있기 때문에 전체 데이터 개수, 페이지 개수를 getTotalElements(), getTotalPages() 메서드로 얻을 수 있다.

Page vs Slice

  • 페이징 처리에 다양한 리턴타입을 제공하는 만큼 요구사항에 따라서 Page와 Slice를 사용하면 될 것 같다.

  • 전체 페이지 개수와 전체 데이터 수를 이용하는 실제 게시판 형식의 페이징 처리를 구현해야한다면 Page를 사용

  • 무한 스크롤 방식을 사용한다면 전체 페이지와 데이터 개수가 필요없기 때문에 Slice 방식을 이용하는 것이 효율적

Last updated