스프링 데이터 Common 4. 쿼리 만들기 - KwangtaekJung/inflearn-spring-data-jpa-keesun GitHub Wiki
- 스프링 데이터 저장소의 메소드 이름으로 쿼리 만드는 방법
- 메소드 이름을 분석해서 쿼리 만들기 (CREATE)
<=쿼리는 스프링 데이터가 만든다.
- 미리 정의해 둔 쿼리 찾아 사용하기 (USE_DECLARED_QUERY)
<=@Query로 정이해 놓은 쿼리를 사용하는 것
- queryLookupSragety: 미리 정의한 쿼리 찾아보고 없으면 만들기 (CREATE_IF_NOT_FOUND)
- @EnableJpaRepositories에서 설정한다.
<=스프링이 설정해주므로 수동으로 해줄 필요 없다.
- 기본 전략인 CREATE_IF_NOT_FOUND를 거의 그대로 사용한다.
- @EnableJpaRepositories에서 설정한다.
- 메소드 이름을 분석해서 쿼리 만들기 (CREATE)
@SpringBootApplication
@Import(KeesunRegister.class)
@EnableJpaRepositories(queryLookupStrategy = QueryLookupStrategy.Key.CREATE_IF_NOT_FOUND)
public class InflearnSpringDataJpaKeesunApplication {
public static void main(String[] args) {
SpringApplication.run(InflearnSpringDataJpaKeesunApplication.class, args);
}
}
- 쿼리 만드는 방법
- 리턴타입 {접두어}{도입부}By{프로퍼티 표현식}(조건식)[(And|Or){프로퍼티 표현식}(조건식)]{정렬 조건} (매개변수)
- 접두어 Find, Get, Query, Count, ...
- 프로퍼티 표현식 Person.Address.ZipCode => find(Person)ByAddress_ZipCode(...)
- 조건식 IgnoreCase, Between, LessThan, GreaterThan, Like, Contains, ...
- 정렬 조건 OrderBy{프로퍼티}Asc|Desc
- 리턴 타입 E, Optional, List, Page, Slice, Stream
- 매개변수 Pageable, Sort
- 리턴타입 {접두어}{도입부}By{프로퍼티 표현식}(조건식)[(And|Or){프로퍼티 표현식}(조건식)]{정렬 조건} (매개변수)
쿼리 메서드로 만들수 있는지 확인한다. (지원 안되는 경우에는 빌드 시 에러 발생함.)
- 쿼리 찾는 방법
- 메소드 이름으로 쿼리를 표현하기 힘든 경우에 사용.
- 저장소 기술에 따라 다름.
- JPA: @Query @NamedQuery