1. Query Method
사용하려는 Repository에 JpaRepository만 상속해주면 스프링의 AOP 기능을 사용하여 구현까지 자동으로 해준다. 간단한 문법으로 객체의 CRUD가 가능하다.
기본적으로 find + "객체" + By + "변수" 로 사용하는데. 중간에 객체는 생략 가능하다.
<code />
<사용 예시>
List<Item> findByItemNm(String itemNm)
-> itemNm 변수명을 사용해서 해당하는 모든 객체를 가져온다.
List<Item> findByPriceLessThan(Integer price)
-> price 변수보다 높은 객체들을 모두 가져온다.

출처 :
쿼리 메소드, JPQL, Querydsl 요약
사용하려는 Repository에 JpaRepository만 상속해주면 스프링의 AOP 기능을 사용하여 구현까지 자동으로 해준다. 간단한 문법으로 객체의 CRUD가 가능하다.기본적으로 find + "객체" + By + "변수" 로 사용하
velog.io
Query Method를 통해서 간단하게 필요한 객체를 조회할 수 있지만,
조금 더 복잡한 조건을 사용하려면 메소드의 길이가 증가하게 된다는 단점이 있다.
이에 대한 해결로는 JPQL(Java Persistence Query Language)가 있다.
2. 2. JPQL(Java Persistence Query Language)
복잡한 조건을 메소드로 표현하기 어려울 수 있기 떄문에 JPQL을 사용하여 직접 쿼리문을 작성하여 객체를 조회할 수 있다.
객체를 대상으로 하는 쿼리문이며 SQL을 추상화해서 사용하기 때문에 어떤 DB를 사용하더라도 문제없이 사용할 수 있다.
@Query(" query 문 ") 으로 사용한다.
<code />
<사용 예시>
@Query("select i from Item i where i.itemNm like %:itemNm% order by i.price desc")
List<Item> findByItemNm(@Param("itemNm") String itemNm);
-> itemNm 명으로 조회하는데, price를 기준으로 내림차순으로 조회한다.
-> :"itemNm"는 @Param('itemNm')을 사용해서 넣어줄 수 있다.
JPQL은 직접 쿼리문을 문자열로 작성하기 때문에 오타로 인한 컴파일 에러를 통해 확인이 불가능하다.
그 이후로
쿼리 메소드를 보완하기 위한 방법이
위 블로그에 적혀있다.
참고!
'Spring' 카테고리의 다른 글
Domain이란? (0) | 2022.11.21 |
---|---|
Repository 만들기와 정렬 방법(최신순/수정된 시간 순) (0) | 2022.11.15 |
Naver 지역 검색 API 사용하기 (0) | 2022.07.18 |
Server to server - header (0) | 2022.07.16 |
Server to server - POST (0) | 2022.06.27 |