스프링 데이터 Common 4. 쿼리 만들기 - KwangtaekJung/inflearn-spring-data-jpa-keesun GitHub Wiki

스프링 데이터 Common: 쿼리 만들기 개요

  • 스프링 데이터 저장소의 메소드 이름으로 쿼리 만드는 방법
    • 메소드 이름을 분석해서 쿼리 만들기 (CREATE) <=쿼리는 스프링 데이터가 만든다.
    • 미리 정의해 둔 쿼리 찾아 사용하기 (USE_DECLARED_QUERY) <=@Query로 정이해 놓은 쿼리를 사용하는 것
    • queryLookupSragety: 미리 정의한 쿼리 찾아보고 없으면 만들기 (CREATE_IF_NOT_FOUND)
      • @EnableJpaRepositories에서 설정한다. <=스프링이 설정해주므로 수동으로 해줄 필요 없다.
      • 기본 전략인 CREATE_IF_NOT_FOUND를 거의 그대로 사용한다.
@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

쿼리 메서드로 만들수 있는지 확인한다. (지원 안되는 경우에는 빌드 시 에러 발생함.)

  • 쿼리 찾는 방법
    • 메소드 이름으로 쿼리를 표현하기 힘든 경우에 사용.
    • 저장소 기술에 따라 다름.
    • JPA: @Query @NamedQuery
⚠️ **GitHub.com Fallback** ⚠️