Named Query

Mina Park·2022년 11월 2일
0

1. 기본개념

  • 정적 쿼리
  • 미리 정의해서 이름을 부여해두고 사용하는 JPQL
  • 사용방법: 어노테이션, XML에 정의
  • 애플리케이션 로딩 시점에 초기화 후 재사용
  • 장점: 애플리케이션 로딩 시점에 쿼리 검증(문법 오류 발견 등)

2. 어노테이션에 정의하여 사용

  • 엔티티에 정의
@Entity
@NamedQuery(
        name = "Member.findByUsername",
        query = "select m from Member m where m.username = :username"
)
public class Member {
	//필드 정의
}
  • 사용 소스
 	//namedQuery
 	List<Member> resultList = em.createNamedQuery("Member.findByUsername")
    	.setParameter("username", "회원1")
        .getResultList();

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

3. XML에 정의하여 사용

4. 설정

  • XML이 항상 우선권을 가짐
  • 애플리케이션 운영환경에 따라 다른 XML 배포 가능

[참고] 📌 spring data jpa 사용시 @Query 어노테이션을 통해 쉽게 사용 가능
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods

  • 이름 없는 named Query라고 부름
  • 인터페이스 메소드 위에 @Query 어노테이션 추가하여 작성하면, JPA가 파싱하여 named Query로 등록
  • 애플리케이션 로딩 시점에 오류 발견 가능

0개의 댓글