[JPA] Query Method

SEOP·2023년 4월 24일
0

메소드 이름으로 쿼리 생성

find{엔티티명}By{필드명} ------> 엔티티명은 생략 가능하다.

List<객체> findBy{필드명}({변수타입} {변수명});
매개변수로 검색할 때 사용

List<객체> findBy{필드명}Or{필드명}({변수타입} {변수명},{변수타입} {변수명});
OR조건을 이용

List<객체> findBy{필드명}LessThan(Integer {변수명});
매개변수 미만인 것을 검색

List<객체> findBy{필드명}LessThanOrderBy{필드명}Desc(Integer {변수명});
매개변수 미만인 것을 검색 + 내림차순 정렬

@Query

: 복잡한 쿼리의 경우, @Query 사용

@Query(select {별칭} from {객체} {별칭} where {별칭}.{필드명} like %:{파라미터로 넘어온 값}% order by {별칭}.{필드명} desc)
List<객체> findBy{필드명}(@Param("{파라미터로 넘어온 값}") String 매개변수 )

ex)
@Query("select i from Item i where i.itemDetail like %:itemDetail% order by i.price desc")
List< Item > findByItemDetail(@Param("itemDetail") String itemDetail)

@Query-nativeQuery

@Query(value="select * from {객체} {별칭} where {별칭}.{필드명} like %:{파라미터로 넘어온 값}% order by {별칭}.{필드명} desc",nativeQuery = true)
List<객체> findBy{필드명}(@Param("{파라미터로 넘어온 값}") String 매개변수)

데이터베이스에 사용하던 쿼리를 그대로 사용해야 할 때는 nativeQeury속성을 사용하면 기존 쿼리 그대로 활용 가능
But 특정 DB에 종속되는 쿼리문을 사용하기 때문에 DB에 대한 독립적이라는 장점 잃는다.
기존에 작성한 통계용 쿼리처럼 복잡한 쿼리 그대로 사용해야 하는 경우 활용

profile
응애 나 애기 개발자

0개의 댓글