우리는 항상 쿼리메서드를 통해서나 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 |