스프링 프레임워크에서는 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 |
댓글