객체지향 쿼리 언어2 - Named 쿼리

SHByun·2023년 1월 7일
0

강의 chap12-6


Named 쿼리

1. Named 쿼리

  • 엔티티 위에 어노테이션으로 선언
  • 쿼리를 선언해놓고 em.createNamedQuery로 불러와서 쓸 수 있다.

  • 동적 쿼리는 안되고 정적 쿼리만 된다.
  • 장점 : 애플리케이션 로딩 시점에 초기화하고 재사용한다.
  • 애플리케이션 로딩 시점에 JPA이 파싱해서 캐시에 저장해놓는다.
  • 애플리케이션 로딩 시점에 쿼리를 검증한다.
  • Member.class
@Entity
@NamedQuery(
        name = "Member.findByUsername",
        query = "select m from Member m where m.username = :username"
)
public class Member {
  • JpaMain.class
List<Member> resultList = em.createNamedQuery("Member.findByUsername", Member.class)
        .setParameter("username", "회원1")
        .getResultList();

for (Member member : resultList) {
    System.out.println("member = " + member);
}

2. XML에 정의

  • mapping-file에 저장
  • xml이 항상 우선권을 가진다.
  • 애플리케이션 운영 환경에 따라 다른 XML을 베포할 수 있다.

3. 정리

  • 위처럼 엔티티에 named쿼리 사용이 별로다.
  • spring data jpa에서 repository에 @Query()를 쓰는 게 제일 좋다.

출처

인프런 강의 - 김영한
자바 ORM 표준 JPA 프로그래밍 - 기본편
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

profile
안녕하세요

0개의 댓글