728x90
Spring Data JPA @Query
SQL과 유사한 JPQL을 사용하여 복잡한 쿼리를 처리할 수 있게 도와주는 기능
간단한 쿼리는 "쿼리 메서드"를 사용해도 되지만 조건이 2가지 이상이면 되도록 @Query를 사용
SQL과 JPQL의 차이점
SQL | JPQL |
DB의 테이블을 대상으로 쿼리 | 엔티티 객체를 대상으로 쿼리(객체지향 쿼리) |
특정 DB에 종속적이다 (DB마다 SQL이 조금씩 다르다) | 특정 DB에 종속적X (SQL을 추상화해서 사용, JPQL로 작성하면 SQL로 변환된다) |
1. @Query사용(JPQL)
- @Query("JPQL") 쿼리 어노테이션 안에 JPQL로 작성한 쿼리문을 넣어준다.
- from 뒤에는 엔티티인 Item을 넣어주고 as로 i(별칭)를 지정 as는 생략 가능 별칭 생략 불가
- e.g., "select i from Item as i" ㅡ> "select i from Item i"
- @Param을 사용 파라미터로 넘어온 itemDetail을 JPQL에 들어갈 변수로 지정 like "% %" 사이에 :itemDetail이 들어가도록 작성
2. @Query 어노테이션 테스트
- "테스트 상품 상세 설명"을 포함한 상품 데이터 10개가 가격이 높은 순부터 잘 조회된다
728x90