본문 바로가기

JPA

[JPA] Named Query - 쿼리를 함수처럼 만들어보자

Named Query

  • 쿼리에 이름을 붙일 수 있는 기능
  • 정적인 쿼리
  • 어노테이션 혹은 XML에 정의
  • 애플리케이션 로딩 시점에 초기화 후 재사용함 
    • ➡️ ‼️ 애플리케이션 로딩 시점에 쿼리를 검증할 수 있음 ‼️

사용 예시

@Entity
@NamedQuery(
        name = "Member.findByUsername", // 쿼리의 이름
        query = "select m from Member m where m.username = :username" // 실행할 쿼리문
)
public class Member {
	...
}
//main
...
// em.createNamedQuery로 호출
List<Member> resultList = em.createNamedQuery("Member.findByUsername", Member.class)
                    .setParameter("username", "회원3")
                    .getResultList();

System.out.println("---------------------");
for (Member s :
    resultList) {
	System.out.println(s);
}
System.out.println("---------------------");

...

실행 결과
Member{id=5, username='회원3', age=60}