본문 바로가기
Spring/JPA

Named 쿼리

by o3oppp 2024. 1. 17.

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();
    ...
    }
}

특징

  1. 애플리케이션 로딩 시점에 초기화 후 재사용
    • 즉, SQL로 파싱 후 1차 캐시에 저장
  2. 애플리케이션 로딩 시점에 쿼리를 검증
@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();
    ...
    }
}

'Spring > JPA' 카테고리의 다른 글

벌크연산(Bulk Operation)  (0) 2024.01.17
페치조인  (0) 2024.01.15
값 타입 컬렉션  (0) 2024.01.02
임베디드 타입  (0) 2023.12.30
영속성 전이  (0) 2023.12.29