Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- AOP
- 알고리즘
- 자바
- pointcut
- transaction
- db
- 스프링 핵심 기능
- http
- Greedy
- 인프런
- kotlin
- SpringBoot
- Android
- 김영한
- spring
- 스프링
- QueryDSL
- Exception
- Servlet
- Spring Boot
- springdatajpa
- Thymeleaf
- java
- 백준
- Proxy
- JPQL
- 그리디
- JDBC
- jpa
- 스프링 핵심 원리
Archives
- Today
- Total
개발자되기 프로젝트
JPQL 기본 문법과 기능 본문
1. JPQL
- JPQL은 객체지향 쿼리 언어이다. 따라서 테이블을 대상으로 쿼리하는 것이 아니라
엔티티 객체를 대상으로 쿼리한다. - JPQL은 SQL을 추상화해서 특정데이터베이스 SQL에 의존하지 않는다.
- JPQL은 결국 SQL로 변환된다.
- .
2. 객체 모델
3.DB 모델
4. JPQL 문법
QL 문법
select_문 :: =
select_절
from_절
[where_절]
[groupby_절]
[having_절]
[orderby_절]
update_문 :: = update_절 [where_절]
delete_문 :: = delete_절 [where_절]
- select m from Member as m where m.age > 18
- 엔티티와 속성은 대소문자 구분 가능(Member, age)
- JPQL 키워드는 대소문자 구분 없음(SELECT, FROM, WHERE)
- 엔티티 이름 사용, 테이블 이름이 아님(Member)
- 별칭은 필수(m) , as는 생략 가능
5. 집합과 정렬
select
COUNT(m), //회원수
SUM(m.age), //나이 합
AVG(m.age), //평균 나이
MAX(m.age), //최대 나이
MIN(m.age) //최소 나이
from Member m
- GROUP BY, HAVING, ORDER BY
6. TypeQuery, Query
- TypeQuery : 반환 타입이 명확할 때 사용
TypedQuery<Member> query = em.createQuery("select m from Member m where m.age > 5", Member.class);
- Query : 반환 타입이 명확하지 않을 때 사용
- 여러 타입이 리턴되는 경우 타입이 명확하지 않으니 Query 사용.
Query query1 = em.createQuery("select m.username, m.age from Member m ");
- 여러 타입이 리턴되는 경우 타입이 명확하지 않으니 Query 사용.
7. 결과조회 API
- query.getResultList() : 결과가 하나 이상일 때, 리스트 반환
- 결과가 없으면 빈 리스트 반환
- query.getSingleResult() : 결과가 정확히 하나 일 경우 사용. 단일 객체 반환
- 결과가 없으면 : javax.persistence.NoResultException
- 둘 이상이면 : javax.persistence.NonUniqueResultException
-
TypedQuery<Member> query = em.createQuery("select m from Member m where m.age > 5", Member.class); query.getResultList(); Query query1 = em.createQuery("select m.username, m.age from Member m "); query1.getSingleResult();
8. 파라미터 바인딩 - 이름기준, 위치 기준.
- 이름기준
TypedQuery<Member> query = em.createQuery("select m from Member m where m.username = :username", Member.class);
query.setParameter("username", "member1");
List<Member> resultList = query.getResultList();
- 위치기준은 쓰지말자. 중간에 뭐 하나 추가되면 순서 바뀜. ㅜ
9. GitHub : 210815 jpql study
'인프런 > [인프런] 자바ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
JPQL 페이징 API (0) | 2021.08.16 |
---|---|
JPQL 프로젝션 (0) | 2021.08.16 |
객체지향 쿼리 언어 (0) | 2021.08.14 |
[예제] 값 타입 매핑 (0) | 2021.08.14 |
값 타입 (0) | 2021.08.13 |
Comments