728x90
JPQL은 객체지향 쿼리 언어다. 따라서 테이블을 대상으로 쿼리 하는 것이 아니라 엔티티 객체를 대상으로 쿼리 한다.
JPQL은 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다.
JPQL은 결국 SQL로 변환된다.

JPQL 문법
select_문 :: =
select_절
from_절
[where_절]
[groupby_절]
[having_절]
[orderby_절]
update_문 :: = update_절 [where_절]
delete_문 :: = delete_절 [where_절]
- select m from Member as m where m.age > 18
- 엔티티와 속성은 대소문자 구분O (Member, age)
- JPQL 키워드는 대소문자 구분X (SELECT, FROM, where)
- 엔티티 이름 사용, 테이블 이름이 아님(Member)
- 별칭은 필수(m) (as는 생략가능)
집합과 정렬
select
COUNT(m), //회원수
SUM(m.age), //나이 합
AVG(m.age), //평균 나이
MAX(m.age), //최대 나이
MIN(m.age) //최소 나이
from Member m
- DB의 그룹 함수와 집합 함수를 사용할 수 있다.
- GROUP BY, HAVING
- ORDER BY
TypeQuery, Query

- TypeQuery: 반환 타입이 명확할 때 사용
- Query: 반환 타입이 명확하지 않을 때 사용
결과 조회 API

- query.getResultList(): 결과가 하나 이상일 때, 리스트 반환
- 결과가 없으면 빈 리스트 반환
- query.getSingleResult(): 결과가 정확히 하나, 단일 객체 반환
- 결과가 없으면: javax.persistence.NoResultException
- 둘 이상이면: javax.persistence.NonUniqueResultException
파라미터 바인딩 - 이름 기준, 위치 기준

- 위치 기반도 지원하지만 사용하지 않는 걸 추천한다.
- 서비스 장애가 발생할 수 있음
728x90
'자바 ORM 표준 JPA 프로그래밍(인프런)' 카테고리의 다른 글
| Ch10. 객체지향 쿼리 언어1(기본 문법) - 페이징 (0) | 2021.12.17 |
|---|---|
| Ch10. 객체지향 쿼리 언어1(기본 문법) - Projection(SELECT) (0) | 2021.12.17 |
| Ch10. 객체지향 쿼리 언어1(기본 문법) - 객체지향 쿼리 언어(JPQL) 소개 (0) | 2021.12.17 |
| Ch09. 값 타입 - 실전 예제(값 타입 매핑) (0) | 2021.12.16 |
| Ch09. 값 타입 - 값 타입 컬렉션 (0) | 2021.12.16 |