본문 바로가기
IT/spring

스프링 @Query 어노테이션

by 뉴코딩맨 2023. 7. 4.
스프링 프레임워크에서는 JPA의 기본적인 쿼리 메소드 이외에도 복잡한 쿼리를 작성해야 할 때가 있습니다. 이때 사용할 수 있는 방법 중 하나가 @Query 어노테이션입니다. @Query 어노테이션의 개념과 사용법, 그리고 예제를 통해 자세히 알아보겠습니다.
 
 

@Query 어노테이션이란?

@Query 어노테이션은 스프링 데이터 JPA에서 제공하는 어노테이션으로, JPA의 Named Query를 메소드에 직접 지정할 수 있게 해줍니다. 즉, 별도의 XML 파일이나 인터페이스에 작성하지 않고도 메소드에 쿼리를 작성할 수 있습니다.
 

@Query 어노테이션의 사용법

@Query 어노테이션은 메소드에 붙여 사용하며, 쿼리를 작성할 수 있는 여러 가지 옵션을 제공합니다. 주요한 사용법은 다음과 같습니다.
  • JPQL 쿼리 작성: value 속성에 JPQL 쿼리를 작성합니다.
  • 네이티브 SQL 쿼리 작성: nativeQuery 속성을 true로 설정하고, value 속성에 네이티브 SQL 쿼리를 작성합니다.
  • 파라미터 바인딩: 메소드의 파라미터에 :파라미터명 형식으로 바인딩할 값을 전달합니다.

 

 

@Query 어노테이션 예제

다음은 @Query 어노테이션을 사용하는 예제 코드입니다.
 
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    @Query("SELECT u FROM User u WHERE u.age > :age")
    List<User> findByAgeGreaterThan(@Param("age") int age);
}
 
위의 예제에서는 @Query 어노테이션을 사용하여 findByAgeGreaterThan 메소드에 JPQL 쿼리를 작성하였습니다. 이 쿼리는 User 엔티티에서 나이가 주어진 값보다 큰 사용자를 조회합니다. :age는 파라미터 바인딩을 나타내며, @Param 어노테이션을 사용하여 파라미터 이름을 지정하였습니다.
 

결론

@Query 어노테이션은 스프링 데이터 JPA에서 복잡한 쿼리를 작성할 때 유용하게 사용할 수 있는 기능입니다. 메소드에 직접 쿼리를 작성하고 파라미터 바인딩을 할 수 있어 개발자에게 편리한 방법을 제공합니다.
 

'IT > spring' 카테고리의 다른 글

스프링 @ManyToOne 어노테이션  (0) 2023.07.04
스프링 QueryDSL  (0) 2023.07.04
스프링 데이터 JPA  (0) 2023.07.04
스프링 CrudRepository  (0) 2023.07.04
스프링 EntityManager  (0) 2023.07.04

댓글