JPA는 JPQL(Java Persistence Query Language)이라는 객체지향 쿼리 언어를 제공한다. 주로 여러 데이터를 복잡한 조건으로 조회할때 사용한다. SQL이 테이블을 대상으로 한다면 JPQL은 엔티티 객체를 대상으로 SQL을 실행한다.
String jpql = "select i from Item i"; // Item이라는 객체 별칭을 i로 하고 select절에 i를 넣어서 Item 객체에 있는 모든 필드들을 조회하는 쿼리
그래서 위와 같이 from 다음에 Item 엔티티 객체 이름이 들어간다. 자바 객체처럼 대소문자를 가리기 때문에 구분 해야한다.
결과적으로 JPQL을 실행하면 그 안에 포함된 엔티티 객체의 매핑 정보를 활용해서 SQL을 만들게 된다.
예시)
실행된 JPQL
select i from Item i
where i.itemName like concat('%',:itemName,'%')
and i.price <= :maxPrice
JPQL을 통해 실행된 SQL (하이버네이트가 해줌)
select
item0_.id as id1_0_,
item0_.item_name as item_nam2_0_,
item0_.price as price3_0_,
item0_.quantity as quantity4_0_
from item item0_
where (item0_.item_name like ('%'||?||'%'))
and item0_.price<=?
jpql에서 파라미터는 다음과 같이 입력한다.
'where price <= :maxPrice'
파라미터 바인딩은 다음과 같이 사용한다.
'query.setParameter("maxPrice", maxPrice)'
'스프링DB' 카테고리의 다른 글
트랜잭션 AOP 주의 사항 (0) | 2022.09.14 |
---|---|
트랜잭션 매니저 선택 (0) | 2022.09.14 |
Jpa 적용 (0) | 2022.09.01 |
참고용 MyBatis기능 정리 (0) | 2022.08.31 |
Spring이 @Mapper를 사용하는 방법 (0) | 2022.08.31 |