The query builder mechanism built into the Spring Data repository infrastructure is useful for building constraining queries over entities of the repository.
The following example shows how to create a number of queries:
// 메서드 이름에서 쿼리 생성
interface PersonRepository extends Repository<Person, Long> {
List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);
// Enables the distinct flag for the query
List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);
List<Person> findPeopleDistinctByLastnameOrFirstname(String lastname, String firstname);
// Enabling ignoring case for an individual property
List<Person> findByLastnameIgnoreCase(String lastname);
// Enabling ignoring case for all suitable properties
List<Person> findByLastnameAndFirstnameAllIgnoreCase(String lastname, String firstname);
// Enabling static ORDER BY for a query
List<Person> findByLastnameOrderByFirstnameAsc(String lastname);
List<Person> findByLastnameOrderByFirstnameDesc(String lastname);
}
쿼리 메서드명은 주제와 술어 부분으로 나뉨
find...By, exists...By와 같이 쿼리의 주제를 정의하고 술어를 더함
제목에는 추가 표현이 포함될 수 있음
생성할 쿼리에 고유한 플래그를 설정하거나 결과 제한 키워드(ex. find)를 사용하지 않는 한 사이의 모든 텍스트는 By
부록은 쿼리 메서드 주제 키워드의 전체 목록과 정렬 및 대소문자 수정자를 포함한 술어 메서드 쿼리를 포함하고 있다.
그러나 첫 번째 By는 실제 기준 술어의 시작을 나타내는 구분 기호 역할을 한다.
매우 기본적인 수준에서 Entity속성에 대한 조건을 정의하고 And 와 Or로 연결할 수 있다.
메서드 구문분석의 실제 결과는 쿼리를 만드는 영속성 저장소에따라 다르다.
그러나 몇 가지 일반적인 사항이 있다.
표현(어구)은 대게 연결될 수 있는 연산자와 결합된 속성 순회
AND와 OR로 속성 표현을 연결할 수 있다.
또한 속성 식에 대한 Between, LessThan, GreaterThan, Like와 같은 연산자를 지원한다.
지원되는 연산자는 다양한 데이터 저장소에 따라 다양할 수 있으니 참조문서의 해당 부분을 참조해라.
메서드 파서(구문 해석 프로그램)는 개별 속성(ex. findByLastnameIgnoreCase(…)) 또는 대소문자 무시를 지원하는 형식의 모든 속성(ex. findByLastnameAndFirstnameAllIgnoreCase(…))에 대해 IgnoreCase 플래그 설정을 지원한다.
대소문자 무시는 저장소에 따라 다를 수 있으니 저장소별 쿼리 메서드는 참조 문서의 관련 섹션을 참조해라.
속성을 참조하는 쿼리 메서드에 OrderBy절을 추가하고 정렬 방향(Asc 또는 Desc)을 제공하여 정적 순서를 적용할 수 있다.
동적 정렬을 지원하는 쿼리 메서드를 만들려면 "특수 매개변수 처리"를 참조
'Spring > JPA' 카테고리의 다른 글
Spring JPA - 특수 매개변수 처리 (0) | 2022.10.14 |
---|---|
Spring JPA - 속성 표현식 (0) | 2022.10.14 |
Spring JPA - 쿼리 조회 전략 (0) | 2022.10.14 |
Spring JPA - 쿼리 메서드 정의 (0) | 2022.10.14 |
Spring JPA - 다양한 스프링 데이터 모듈과 함께 리포지토리 사용하기 (0) | 2022.10.13 |