Burninghering's Blog
article thumbnail
Published 2022. 11. 15. 20:53
Query Method 쿼리 메소드란? Spring

Query Method

사용하려는 Repository에 JpaRepository만 상속해주면 스프링의 AOP 기능을 사용하여 구현까지 자동으로 해준다. 간단한 문법으로 객체의 CRUD가 가능하다.

기본적으로 find + "객체" + By + "변수" 로 사용하는데. 중간에 객체는 생략 가능하다.

<사용 예시>
List<Item> findByItemNm(String itemNm) 
-> itemNm 변수명을 사용해서 해당하는 모든 객체를 가져온다.

List<Item> findByPriceLessThan(Integer price)
-> price 변수보다 높은 객체들을 모두 가져온다.

 

출처 : 

https://velog.io/@simgyuhwan/%EC%BF%BC%EB%A6%AC-%EB%A9%94%EC%86%8C%EB%93%9C-JPQL-Querydsl-%EC%9A%94%EC%95%BD

 

쿼리 메소드, JPQL, Querydsl 요약

사용하려는 Repository에 JpaRepository만 상속해주면 스프링의 AOP 기능을 사용하여 구현까지 자동으로 해준다. 간단한 문법으로 객체의 CRUD가 가능하다.기본적으로 find + "객체" + By + "변수" 로 사용하

velog.io

 

Query Method를 통해서 간단하게 필요한 객체를 조회할 수 있지만,

조금 더 복잡한 조건을 사용하려면 메소드의 길이가 증가하게 된다는 단점이 있다.
이에 대한 해결로는 JPQL(Java Persistence Query Language)가 있다.

 

2. JPQL(Java Persistence Query Language)

복잡한 조건을 메소드로 표현하기 어려울 수 있기 떄문에 JPQL을 사용하여 직접 쿼리문을 작성하여 객체를 조회할 수 있다.
객체를 대상으로 하는 쿼리문이며 SQL을 추상화해서 사용하기 때문에 어떤 DB를 사용하더라도 문제없이 사용할 수 있다.
@Query(" query 문 ") 으로 사용한다.

<사용 예시>

@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
profile

Burninghering's Blog

@개발자 김혜린

안녕하세요! 반갑습니다.