728x90
@NamedQuery
@Entity
@NamedQuery(
name = "Member.findByUsername",
query = "select m from Member m where m.username = :username")
public class Member{
...
}
List<Member> resultList =
em.createNamedQuery("Member.findByUsername", Member.class)
.setParameter("username", "회원1")
.getResultList();
- 미리 정의해서 이름을 부여해 두고 사용하는 JPQL이다.
- 정적 쿼리만 가능하다.
- 애너테이션, XML에 정의할 수 있다.
- 애플리케이션 로딩 시점에 초기화 후 재사용한다.
- 애플리케이션 로딩 시점에 JPA나 하이버네이트가 SQL로 파싱 하여 캐시하고 있다.
- 애플리케이션 로딩 시점에 쿼리를 검증할 수 있다.
- @Query()에 적는 것도 Spring Data JPA에 의해 SQL로 파싱 된다.
728x90
'[JAVA] > JPA' 카테고리의 다른 글
JPARepository의 findAll() 호출 시 하나의 Row가 중복해서 여러 개 들어가는 경우와 특정 컬럼만 null이 들어가 있는 경우 (엔티티명과 컬럼명의 올바른 매핑 방법) (0) | 2023.05.19 |
---|---|
JPQL - 벌크 연산 (1) | 2023.05.14 |
JPQL - 엔티티 직접 사용 (0) | 2023.05.13 |
JPQL - 다형성 쿼리 (0) | 2023.05.13 |
JPQL - fetch join (0) | 2023.05.13 |