@Query란?

Spring Data JPA에서 JPQL 또는 네이티브 쿼리를 실행하기 위해 사용하는 어노테이션이다.

ArtifactPermalink

  • org.springframework.data.jpa

역할Permalink

  • JPQL 언어를 통해 복잡한 쿼리 처리를 지원
  • 네이티브 SQL을 실행할 수도 있음
  • 메서드 기반 쿼리보다 더 정교한 쿼리 작성 가능

사용법Permalink

1️⃣ JPQL을 활용한 @Query 예제Permalink

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import java.util.List;

public interface UserRepository extends CrudRepository<User, Long> {

    @Query("SELECT u FROM User u WHERE u.status = 'ACTIVE'")
    List<User> findActiveUsers();
}

2️⃣ 네이티브 쿼리 사용Permalink

@Query(value = "SELECT * FROM user WHERE status = 'ACTIVE'", nativeQuery = true)
List<User> findActiveUsersNative();

장점과 단점Permalink

✅ 장점Permalink

  • 메서드 이름 기반 쿼리보다 복잡한 쿼리 작성 가능
  • JPQL 및 네이티브 SQL 모두 지원
  • Spring Data JPA와 유연하게 결합 가능

❌ 단점Permalink

  • 직접 쿼리를 작성해야 하므로 유지보수 비용 증가 가능
  • 메서드 이름 기반 쿼리보다 가독성이 낮을 수 있음

연결문서Permalink

댓글남기기