본문 바로가기
[JAVA]/JPA

JPQL - @NamedQuery 애너테이션

by 황원용 2023. 5. 13.
728x90

@NamedQuery

@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();
  • 미리 정의해서 이름을 부여해 두고 사용하는 JPQL이다.
  • 정적 쿼리만 가능하다.
  • 애너테이션, XML에 정의할 수 있다.
  • 애플리케이션 로딩 시점에 초기화 후 재사용한다.
  • 애플리케이션 로딩 시점에 JPA나 하이버네이트가 SQL로 파싱 하여 캐시하고 있다.
  • 애플리케이션 로딩 시점에 쿼리를 검증할 수 있다.
  • @Query()에 적는 것도 Spring Data JPA에 의해 SQL로 파싱 된다.
728x90