본문 바로가기
프로그래밍/Spring

@Query어노테이션, JPQL(Java Persistence Query Language)

by Mr-후 2019. 4. 17.
반응형

@Query어노테이션, JPQL(Java Persistence Query Language)


이게 이건지 모르고 사용했는데 또 하나 알게 되었다. 


public interface CustomerRepository extends JpaRepository<Customer, Integer> {

@Query("SELECT x FROM Customer x ORDER BY x.firstName, x.lastName")

List<Customer> findAllOrderByName(); 

}


JPA는 JPQL 뿐만 아니라 SQL도 사용할 수 있는데 스프링 데이터 JPA에서 다음과 같이 @Query에 nativeQuery=true 를 지정하면 SQL을 사용할 수 있다. 


@Query(value="SELECT id, first_name, last_name FROM customers ORDER BY first_name, last_name", nativeQuery=true)


하지만 이렇게 SQL을 사용한다면 JPA의 장점을 활용할 수 없으며 기본으로 JPQL을 사용하고, 벤더에 의존하는 구문을 꼭 사용해야하는 복잡한 쿼리를 기술할 때만 SQL을 사용하면 된다. 



반응형