Spring/Spring Data JPA

[Spring Data JPA] 3-2. JPA Query Methods (1)

noahkim_ 2024. 8. 2. 13:37

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);

 


출처