Named 쿼리
- 미리 정의해서 이름을 부여해두고 사용하는 SQL
- 미리 정의하기 때문에 정적 쿼리
- 어노테이션이나 XML에 정의
@Entity
@NamedQuery( // Named 쿼리 사용
name = "Member.findByUsername",
query = "select m from Member m where m.username = :username")
public class Member{
...
}
...
public class JpaMain {
public static void main(String[] args) {
List<Member> resultList =
em.createNamedQuery("Member.findByUsername", Member.class)
.setParameter("username", "회원1")
.getResultList();
...
}
}
특징
- 애플리케이션 로딩 시점에 초기화 후 재사용
- 즉, SQL로 파싱 후 1차 캐시에 저장
- 애플리케이션 로딩 시점에 쿼리를 검증
@Entity
@NamedQuery( // Named 쿼리 사용
name = "Member.findByUsername",
query = "select m from Memberzzz m where m.username = :username") // 에러
public class Member{
...
}
...
public class JpaMain {
public static void main(String[] args) {
List<Member> resultList =
em.createNamedQuery("Member.findByUsername", Member.class)
.setParameter("username", "회원1")
.getResultList();
...
}
}