Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

JPQL 기본 문법과 기능 본문

인프런/[인프런] 자바ORM 표준 JPA 프로그래밍

JPQL 기본 문법과 기능

Seung__ 2021. 8. 15. 00:48

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 ");​

 

 

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


 

GitHub - bsh6463/JPQL_STUDY

Contribute to bsh6463/JPQL_STUDY development by creating an account on GitHub.

github.com

 

'인프런 > [인프런] 자바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