✅ Named 쿼리 - 정적 쿼리

→ hibernate 같은 애들이 해당 쿼리를 SQL로 파싱해서 캐시아웃 함

→ 로딩 시점에 쿼리가 잘못 짜져 있으면 에러를

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

💡 Spring Data JPA 에서는 이렇게 사용 (이름 없는 Named 쿼리)

Untitled

Named 쿼리 - 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>

		 <named-query name="Member.count">
		 <query>select count(m) from Member m</query>
		 </named-query>
</entity-mappings>