인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

실전! 스프링 데이터 JPA

스프링 데이터 JPA 페이징과 정렬

Page 자료구조에 관해 질문입니다.

작성

·

564

·

수정됨

0

PageRequest pageRequest = PageRequest.of(0, 3, Sort.by(Direction.DESC, "username"));
int age = 10;

//when
Page<Member> page = memberRepository.findByAge(age, pageRequest);
  1. PageRequest.of 코드에서 첫 번째 파라미터가 무엇을 의미하는지 헷갈립니다.

  2. PageRequest.of 의 2번째 파라미터는 한 페이지의 element 개수이고(limit), 3번째 파라미터는 정렬 조건이 맞나요?

List<Member> content = page.getContent();

assertThat(content.size()).isEqualTo(3);
assertThat(page.getTotalElements()).isEqualTo(5);
assertThat(page.getNumber()).isEqualTo(0);
assertThat(page.getTotalPages()).isEqualTo(2);
assertThat(page.isFirst()).isTrue();
assertThat(page.hasNext()).isTrue();

 

  1. page.getContent()는 현재 페이지의 데이터를 가져오는 메소드인가요?

  2. page.getNumber()는 현재 페이지를 가져오는 메소드인가요?

  3. Page는 책처럼 0,1,2,3 ... 이렇게 페이지가 있는 거고

    Content는 그 Page안에 있는 데이터를 의미하는 건가요? List<List<data>> 와 같은 구조로 되어 있는 것일까요? Page와 Content의 자료 구조가 어떻게 되어있는지가 궁금합니다.

     

답변 1

0

안녕하세요. hjemsti님, 공식 서포터즈 David입니다.

  1. PageRequest.of 코드에서 첫 번째 파라미터가 무엇을 의미하는지 헷갈립니다.

    => 페이지의 인덱스를 말합니다. 즉, 페이지의 번호라고 볼 수 있습니다.

  2. PageRequest.of 의 2번째 파라미터는 한 페이지의 element 개수이고(limit), 3번째 파라미터는 정렬 조건이 맞나요?

    => 네, 맞습니다.

  3. page.getContent()는 현재 페이지의 데이터를 가져오는 메소드인가요?

    => 네, 맞습니다.

  4. page.getNumber()는 현재 페이지를 가져오는 메소드인가요?

    => 현재 페이지 번호를 가져옵니다.

  5. Page의 구현체는 PageImpl 클래스입니다. 해당 클래스쪽 코드를 살펴보시면 대략적으로 어떤 느낌인지 아실 수 있을 것 같습니다. 아래 2가지 클래스 코드를 참고해 주세요.
    https://github.com/spring-projects/spring-data-commons/blob/main/src/main/java/org/springframework/data/domain/PageImpl.java
    https://github.com/spring-projects/spring-data-commons/blob/main/src/main/java/org/springframework/data/domain/Chunk.java

아울러, 1~4번 질문의 경우 5분 36초부터 설명하고 있으니 확인 부탁드립니다:)

감사합니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기