프로그래밍/Spring

[ JPA ] Named Query

Yanoo 2022. 2. 3. 12:10
728x90
반응형

<인프런의 김영한님의 강의를 보고 정리한 내용입니다>

 

 

 

🎈 Named Query

Named Query란 단순하게 말해서,

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

결과를 보면

제대로 나왔다.

 

그리고 여기선 엔티티에 정의 했지만 XML에도 정의할 수 있다.

 

이 Named Query의 특징을 보면

  • 미리 정의해서 이름을 부여해두고 사용하는 JPQL
  • 정적 쿼리
  • 어노테이션, XML에 정의
  • 애플리케이션 로딩 시점에 초기화 후 재사용
  • 애플리케이션 로딩 시점에 쿼리를 검증

애플리케이션 로딩 시점에 초기화 후 재사용이라는 특징은 즉, sql로 파싱해서 캐시한다.

 

그리고 애플리케이션 로딩 시점에 쿼리를 검증한다는 특징은

@NamedQuery(
        name = "Member.findByUsername",
        query = "select m from MemberQQQQQQQQQQQQQQQQ m where m.username = :username")

이렇게 jpql을 잘못 작성했다고 하자, 이 때, 어플리케이션을 실행하면

이렇게 따로 이 쿼리를 사용하지 않아도 미리 검증해준다.

728x90
반응형