본문 바로가기

JPA

2월 20일 JPQL - named쿼리 (정적쿼리)

JPQL - named쿼리 (정적쿼리)

-미리 정의해서 이름을 부여해두고 사용하는 JPQL

-정적쿼리

-어노테이션 , xml에 정의

-애플리케이션 로딩 시점에 포기화 후 재사용

-애플리케이션 로딩 시점에 쿼리를 검증 //시작시 문법 오류 감지

 

ex)

@Entity

@namedQuery(

name = "Member.findByUsername", //이름을 지정해준다.

query = "select m from Member m where m.username = :username"

 

public class Member{

...}

)

 

쿼리는 미리 만들어주고 그 반환값을 @Entity로 받는다.

 

List<Member> resultList = 

em.createNamedQuery("Member.findByUsername" , Member.class)

//Member.findByUsername 이름으로 정적쿼리를 불러온다.

.setParameter("username" , "회원1")

.getResultList();

 

named 쿼리환경에 따른설정

-xml이 항상 우선권을 가진다.

-애플리케이션 운영 환경에 따라 다른 XML을 배포할 수 있다.