1. Query Lookup Strategies
- Derived Query: 자동 생성 (메서드 이름 기반)
- Declared Query: 명시적 정의
2. Query Creation
Derived Query
- 메서드 이름 기반
List<User> findByFirstnameStartingWith(String prefix);
List<User> findByLastnameEndingWith(String suffix);
List<User> findByEmailContaining(String infix);
List<User> findByDescriptionNotContaining(String text);
이스케이프 설정
- like 쿼리 인수가 와일드카드 문자 포함 시 필요
@EnableJpaRepositories(escapeCharacter = '\\')
Declared Query
@NamedQuery
- 정적 쿼리 정의 (컴파일 타임에 컴파일됨)
- class
@Query
- 정적 쿼리 정의 (JPQL, Native Query)
- 동적 쿼리 정의 (JPQL)(런타임에 컴파일됨)
- repository
3. Using JPA Named Queries
Declare
XML (META-INF/orm.xml)
<!-- META-INF/orm.xml -->
<named-query name="User.findByLastname">
<query>select u from User u where u.lastname = ?1</query>
</named-query>
Annotation (@NamedQuery)
@Entity
@NamedQuery(name = "User.findByLastname", query = "SELECT u FROM User u WHERE u.lastname = ?1")
public class User {
// ...
}
Use
Repository
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByLastname(String lastname);
User findByEmailAddress(String emailAddress);
}
출처
'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-4. 객체지향 쿼리 언어: QueryDSL (2) (0) | 2024.08.02 |
[자바 ORM 표준 JPA 프로그래밍] 10-4. 객체지향 쿼리 언어: QueryDSL (1) (0) | 2024.08.02 |