> Java > java지도 시간 > Spring Data JPA에서 주석으로 쿼리 결과를 제한하는 방법은 무엇입니까?

Spring Data JPA에서 주석으로 쿼리 결과를 제한하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-04 03:08:30
원래의
927명이 탐색했습니다.

How to Limit Query Results with Annotations in Spring Data JPA?

Spring-Data-JPA용 setMaxResults 주석

강력한 JPA 저장소 추상화 라이브러리인 Spring-Data-JPA는 Spring에서 데이터 액세스를 단순화합니다. 기반의 Java 애플리케이션. 그러나 주석을 사용하여 쿼리에서 반환되는 최대 결과 수를 설정하는 것은 어려운 일이었습니다.

Spring Data JPA 1.7.0(Evans Release Train) 솔루션

In Spring Data JPA 1.7.0 이상에서는 상황이 개선되었습니다. 이제 Top 및 First 키워드를 사용하여 쿼리 결과를 제한할 수 있습니다. 예를 들어:

findTop10ByLastnameOrderByFirstnameAsc(String lastname);
로그인 후 복사

Spring Data는 반환되는 결과 수를 지정된 수로 자동으로 제한합니다(생략할 경우 기본값은 1). OrderBy 절이나 메서드의 Sort 매개변수를 통해 결과 순서를 지정하는 것이 중요합니다.

Spring Data JPA 1.7.0 이전

이 개선 이전에는 데이터 조각을 검색하려면 페이지 매김을 사용해야 했습니다. Spring Data는 페이지 매김 요청을 위해 Pageable 인터페이스를 사용하고 결과 처리를 위해 페이지 추상화를 사용합니다.

다음과 같이 저장소 인터페이스를 구현합니다.

public interface UserRepository extends Repository<User, Long> {

  List<User> findByUsername(String username, Pageable pageable);
}
로그인 후 복사

인터페이스를 사용하여 결과를 얻습니다.

Pageable topTen = new PageRequest(0, 10);
List<User> result = repository.findByUsername("Matthews", topTen);
로그인 후 복사

컨텍스트 정보가 필요한 경우 Page를 반환 유형으로 사용하세요.

public interface UserRepository extends Repository<User, Long> {

  Page<User> findByUsername(String username, Pageable pageable);
}
로그인 후 복사

클라이언트 코드는 이 정보를 활용할 수 있습니다.

Pageable topTen = new PageRequest(0, 10);
Page<User> result = repository.findByUsername("Matthews", topTen);
Assert.assertThat(result.isFirstPage(), is(true));
로그인 후 복사

Page를 반환으로 사용 유형은 총 요소 수를 결정하기 위해 개수 프로젝션 쿼리 실행을 트리거합니다. 또한 안정적인 결과를 보장하려면 항상 PageRequest에 정렬 정보를 포함하세요.

위 내용은 Spring Data JPA에서 주석으로 쿼리 결과를 제한하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿