@Query

김나영·2023년 7월 10일
0

Spring

목록 보기
35/38

@Query

  • JPA에서 제공하는 Annotation으로 사용자가 직접 쿼리를 작성하여 데이터베이스에 질의할 수 있도록 함

  • 주로 Repository 인터페이스의 메서드에 적용됨

  • 더 구체적인 쿼리 메서드를 작성하기 위해 사용하는 쿼리 메서드의 custom 버전

  • 쿼리는 기본적으로 JPA에서 사용하는 쿼리 문법인 JPQL을 사용

ex)

public interface PostRepository extends JpaRepository<Post, Long> {
    @Query("select p from Post p " +
            "left join fetch p.commentList c " +
            "left join fetch p.user " +
            "left join fetch c.user " +
            "order by p.createdAt desc")
    List<Post> findAllPostsWithCommentsOrderByCreatedAtDesc();

}

장점

  • 유연한 쿼리 작성

    • 복잡한 데이터베이스 조작이나 특정한 필요에 맞는 쿼리를 작성하는데 유용
  • 필요한 Entity만 조회하고 join을 최소화하여 쿼리 성능을 향상 시킬 수 있음

단점

  • 유지 보수가 어려움

    • 쿼리의 복잡성이 증가할 수 있음

      • 변경이 필요한 경우 쿼리를 일일이 수정해야하기 때문에
  • 직접 쿼리를 작성하면 해당 쿼리는 해당 리포지토리에서만 사용되기 때문에 여러 리포지토리에서 동일한 쿼리를 재사용해야 할 경우, 중복된 코드가 발생할 수 있음

참고 블로그 : @Query, Spring Data JPA에서 Query를 사용하는 방법

0개의 댓글