@Query
@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
- 직접 쿼리를 작성해야 하므로 유지보수 비용 증가 가능
- 메서드 이름 기반 쿼리보다 가독성이 낮을 수 있음
댓글남기기