Section 1. @Query 어노테이션
1. Spring Data JPA @Query 어노테이션
SQL과 유사한 JPQL (Java Persistence Query Language) 라는 객체지향 쿼리 언어를 통해 복잡한 쿼리 처리를 지원
- JPQL - 테이블이 아닌 엔티티 객체를 대상으로 검색하는 객체지향 쿼리, SQL 추상화로 인해 특정 db sql 에 의존하지 않음
2. @Query 를 이용한 조회
- 상품 상세 설명(itemDetail)으로 상품을 조회하고 결과는 가격순으로 정렬
- select "엔티티명" = select "*"
- @Param 을 통해 매개변수로 넘어온 값을 JPQL에 들어갈 변수로 지정
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F7371d711-ada6-4efd-87fe-b442935fdbb1%2Fimage.png)
3. @Query 를 이용한 조회 테스트 수행
- ItemDetail 컬럼 값에 "테스트 상품 상세 설명" 문자열이 포함되어 있으면 추출
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F1471b893-6b43-4cb7-a0bb-280e9403fbc6%2Fimage.png)
4. 쿼리 전달 및 결과
- 쿼리 전달 (where 및 order by 문을 통해서 조건 및 정렬 수행)
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F3e7ed2a6-3f20-4e5e-88b4-08e15e5204cc%2Fimage.png)
- 쿼리 결과
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Fb18bb365-07af-4d68-aede-4862924bd56e%2Fimage.png)
Section 2. @Query nativeQuery
1. nativeQuery
기존의 SQL 문을 사용할 수 있도록 지원하는 @Query 어노테이션의 속성
2. @Query nativeQuery 를 이용한 조회
- @Query 속성의 value 값으로 SQL 문을 지정하고, nativeQuery 속성 값을 true 지정
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F1cd7db3c-6a6f-42b8-819b-89cc285daeae%2Fimage.png)
3. @Query 를 이용한 조회 테스트 수행
- ItemDetail 컬럼 값에 "테스트 상품 상세 설명" 문자열이 포함되어 있으면 추출
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F7d88ea99-a4d3-45e9-b784-67d3ebff6bf5%2Fimage.png)
4. 쿼리 전달 및 결과
- 위에 @Query 를 이용한 조회 결과와 동일한 결과를 얻을 수 있음