- 미리 정의해서 이름을 부여해두고 사용하는 JPQL
- 정적 쿼리
- 어노테이션 , XML에 정의
- 애플리케이션 로딩 시점에 초기화 후 재사용
- 애플리케이션 로딩 시점에 쿼리를 검증
- 실무에서는 Spring Data JPA 를 사용하기 때문에 @Query 어노테이션으로 JpaRepository를 정의해서 사용
JPQL
=====================================================================
//Member class 위에 정의함
@Entity
@NamedQuery(
name = "Member.findByUsername",
query = "select m from Member m where m.username = :username"
)
public class Member {
=====================================================================
SQL
=====================================================================
Hibernate:
/* Member.findByUsername */ select
member0_.id as id1_0_,
member0_.age as age2_0_,
member0_.TEAM_ID as team_id5_0_,
member0_.type as type3_0_,
member0_.username as username4_0_
from
Member member0_
where
member0_.username=?
=====================================================================
- XML이 항상 우선권을 가진다
- 애플리케이션 운영 환경에 따라 다른 XML을 배포할 수 있다.