본문 바로가기

Server Development/Data API

JPA - @Query with Spring JPA

 

우리는 항상 쿼리메서드를 통해서나 JPARepository에서 제공해주는 기본 메서드를 사용해 모든 데이터를 처리하기에는 한계가 있다. 데이터베이스가 복잡해질 수록 정리할 데이터가 많아질수록 또 여러가지 서비스를 하면서 결국에는 쿼리문을 작성해야하는 경우가 생긴다.

다만, MyBatis보단 기본적으로 많은 양의 쿼리문을 지원해주기에 좀 더 낫기도 하면서 결국에는 쿼리문 대신 메서드를 다 숙지해야한다는 점에서 상속 관계에 속한다.

 

아무튼, 이번에는 이런 경우를 대비해 JPA에서 쿼리문을 작성하는법을 적어보려고 한다.

 

 

@Query

- JPQL로 쿼리를 작성하는 방법

- Native Query로 작성하는 것도 지원해줌.

- Spring Data JPA에서 제공

- JPQL 문법은 SQL과 유사하며 객체지향적인 쿼리임.

 

 

 

기본 예시

// JPQL로 작성
@Query("SELECT m FROM member m WHERE m.age>10")
List<MemberEntity> findByAge();

// Native 쿼리로 작성
@Query(value = "SELECT * FROM member m WHERE m.age>10", nativeQuery=true)
List<MemberEntity> findByAge();

 

 

파리미터 처리 예시

// JPQL로 작성
@Query("SELECT m FROM member m WHERE m.age > ?1")
List<MemberEntity> findByAge(Integer userAge);
-> ? 뒤의 숫자는 만약 리스트로 파라미터를 받으면 파라미터의 인덱스이다.

OR

@Query("SELECT m FROM member m WHERE m.age > :userAge")
List<MemberEntity> findByAge(Integer userAge);

OR

@Query("SELECT m FROM member m WHERE m.age > :age")
List<MemberEntity> findByAge(@Param(age) Integer userAge);

 

 

 

'Server Development > Data API' 카테고리의 다른 글

JPA - Join  (0) 2023.05.09
Cache - Redis  (0) 2023.04.06
JPA - Query Method with Spring JPA  (0) 2023.04.05
JPA - Auditing  (0) 2023.04.04
JPA - EntityManager, EntityMapping, Context  (0) 2023.04.04