[Spring Boot] JPA 강의 정리-39 (Named 쿼리)

Posted by 김성철

SpringBoot - JPA 강의 정리-39(Named 쿼리)

Named 쿼리

- 미리 정의해서 이름을 부여해두고 사용하는 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=?  
=====================================================================  

Named 쿼리 환경에 따른 설정

- XML이 항상 우선권을 가진다  
- 애플리케이션 운영 환경에 따라 다른 XML을 배포할 수 있다.