Named 쿼리


Named 쿼리


특징

미리 정의해서 이름을 부여해두고 사용하는 JPQL

정적쿼리에서만 사용할 수 있다.

• 어노테이션, XML에 정의

• 애플리케이션 로딩 시점에 초기화 후 재사용

애플리케이션 로딩 시점에 쿼리를 검증


사용방법

▷ 어노테이션 설정

@NamedQuery(
        name = "Member.findByUsername",
        query = "select m from Member m where m.username = :username"
)
@Entity
public class Member {
    ...
}
List<Member> resultList = em.createNamedQuery("Member.findByUsername", Member.class)
                    .setParameter("username", "member1")
                    .getResultList();


▷ xml 설정

▷ [META-INF/persistence.xml]
<persistence-unit name="jpabook" >
    <mapping-file>META-INF/ormMember.xml</mapping-file>
▷ [META-INF/ormMember.xml]
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm" version="2.1">
    <named-query name="Member.findByUsername">
        <query>
            <![CDATA[
                select m
                from Member m
                where m.username = :username
            ]]>
        </query>
    </named-query>
</entity-mappings>