1. Query Lookup Strategies
Derived Query
- 메서드 이름 기반 자동 생성
예제) Derived Query
더보기
List<User> findByFirstnameStartingWith(String prefix);
List<User> findByLastnameEndingWith(String suffix);
List<User> findByEmailContaining(String infix);
List<User> findByDescriptionNotContaining(String text);
@EnableJpaRepositories(escapeCharacter = '\\')
- 이스케이프 설정: like 쿼리 인수가 와일드카드 문자 포함 시 필요
Declared Query
- 명시적 정의
Annotation | 쿼리 타입 | 정의 위치 | 컴파일 시점 | 쿼리 종류 | 특징 |
@NamedQuery | 정적 쿼리 | 클래스 | 컴파일 타임 | JPQL | 실행 시점에서 오류가 발생하지 않음 |
@Query | 정적/동적 쿼리 | 레포지토리 메서드 | 런타임 | JPQL Native Query |
동적 쿼리 생성 가능
실행 시점에서 오류 발생 가능성 있음 |
예시) @NamedQuery
더보기
@Entity
@NamedQuery(name = "User.findByLastname", query = "SELECT u FROM User u WHERE u.lastname = ?1")
public class User {
// ...
}
예시) @Query
더보기
@Query("SELECT u FROM User u WHERE (:name IS NULL OR u.name = :name) AND (:age IS NULL OR u.age = :age)")
List<User> findByNameAndAge(@Param("name") String name, @Param("age") Integer age);
출처
'Spring > Spring Data JPA' 카테고리의 다른 글
[Spring Data JPA] 3-2. JPA Query Methods (5) (0) | 2024.08.02 |
---|---|
[Spring Data JPA] 3-2. JPA Query Methods (2) (0) | 2024.08.02 |
[Spring Data JPA] 3-1. Defining Query Methods (3) (0) | 2024.08.02 |
[자바 ORM 표준 JPA 프로그래밍] 10-3. 객체지향 쿼리 언어: QueryDSL (0) | 2024.08.02 |
[Spring Data JPA] 3-1. Defining Query Methods (2) (0) | 2024.08.02 |