1. 쿼리 메소드 (Query Method)
Spring Data JPA 에서 제공하는 핵심 기능 중 하나로 Repository 인터페이스에 간단한 네이밍 룰에 따라 메소드를 작성하면, 원하는 쿼리를 실행하도록 지원하는 메소드
2. 쿼리 메소드 문법
find + (엔티티 이름) + By + 변수이름
3. 쿼리 메소드 Sample 및 JPQL snippet
| Keyword | Sample | JPQL snippet |
|---|---|---|
| Distinct | findDistinctByLastnameAndFirstname | select distinct … where x.lastname = ?1 and x.firstname = ?2 |
| And | findByLastnameAndFirstname | … where x.lastname = ?1 and x.firstname = ?2 |
| Or | findByLastnameOrFirstname | … where x.lastname = ?1 or x.firstname = ?2 |
| Is、Equals | findByFirstname, findByFirstnameIs, findByFirstnameEquals | … where x.firstname = ?1 |
| Between | findByStartDateBetween | … where x.startDate between ?1 and ?2 |
| LessThan | findByAgeLessThan | … where x.age < ?1 |
| LessThanEqual | findByAgeLessThanEqual | … where x.age <= ?1 |
| GreaterThan | findByAgeGreaterThan | … where x.age > ?1 |
| GreaterThanEqual | findByAgeGreaterThanEqual | … where x.age >= ?1 |
| After | findByStartDateAfter | … where x.startDate > ?1 |
| Before | findByStartDateBefore | … where x.startDate < ?1 |
| IsNull、Null | findByAge(Is)Null | … where x.age is null |
| IsNotNull、NotNull | findByAge(Is)NotNull | … where x.age not null |
| Like | findByFirstnameLike | … where x.firstname like ?1 |
| NotLike | findByFirstnameNotLike | … where x.firstname not like ?1 |
| StartingWith | findByFirstnameStartingWith | … where x.firstname like ?1 ( %가 뒤에 추가된 매개 변수) |
| EndingWith | findByFirstnameEndingWith | … where x.firstname like ?1 ( %가 앞에 추가된 매개 변수) |
| Containing | findByFirstnameContaining | … where x.firstname like ?1 ( %가 래핑된 매개 변수) |
| OrderBy | findByAgeOrderByLastnameDesc | … where x.age = ?1 order by x.lastname desc |
| Not | findByLastnameNot | … where x.lastname <> ?1 |
| In | findByAgeIn(Collection ages) | … where x.age in ?1 |
| NotIn | findByAgeNotIn(Collection ages | … where x.age not in ?1 |
| True | findByActiveTrue() | … where x.active = true |
| False | findByActiveFalse() | … where x.active = false |
| IgnoreCase | findByFirstnameIgnoreCase | … where UPPER(x.firstname) = UPPER(?1) |
4. 상품 조회하기 테스트

5. 실제 쿼리 전달 및 결과

