<인프런의 김영한님의 강의를 보고 정리한 내용입니다>
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의 특징을 보면
애플리케이션 로딩 시점에 초기화 후 재사용이라는 특징은 즉, sql로 파싱해서 캐시한다.
그리고 애플리케이션 로딩 시점에 쿼리를 검증한다는 특징은
@NamedQuery(
name = "Member.findByUsername",
query = "select m from MemberQQQQQQQQQQQQQQQQ m where m.username = :username")
이렇게 jpql을 잘못 작성했다고 하자, 이 때, 어플리케이션을 실행하면
이렇게 따로 이 쿼리를 사용하지 않아도 미리 검증해준다.
[ Spring ] DI 컨테이너 싱글톤 방식의 문제점 (0) | 2022.02.05 |
---|---|
[ Spring ] DI 컨테이너와 싱글톤 (0) | 2022.02.04 |
[ JPA ] 페치 조인 (fetch join) - 한계 (0) | 2022.02.02 |
[ JPA ] 페치 조인 (fetch join) - 기본 (0) | 2022.02.02 |
[ JPA ] JPQL 경로 표현식 (0) | 2022.01.31 |