스프링부트 이론/JPA
[JPQL 문법] JPQL 기본 문법과 쿼리 API
hyun2371
2023. 8. 2. 19:23
객체 지향 쿼리 언어 JPQL 기본 문법에 대해 살펴보자.
규칙
- 엔티티와 속성은 대소문자를 구분한다.
- ex) Member, age
- JPQL 키워드는 구분하지 않는다.
- ex) SELECT, from
- 테이블명이 아니라 엔티티명을 사용한다.
- 별칭은 필수로 있어야 하고 as는 생략 가능하다.
select m from Member as m where m.age > 18
집합과 정렬
select
COUNT(m),
SUM(m.age),
AVG(m.age),
MAX(m.age),
MIN(m.age)
from Member m
결과 조회 API
query.getResultList()
결과가 하나 이상일 때, 리스트를 반환한다. 결과가 없으면 빈 리스트를 반환한다.
query.getSingleResult()
무조건 결과가 하나인 단일 객체를 반환한다.
결과가 없으면 java.persistence.NoResultException이 발생하고,
결과가 두 개 이상이면 java.persistence.NoUniqueResultException이 발생한다.
파라미터 바인딩
.setParamter(key, value) 형태이다.
username에 "member1"을 대입하여 해당 이름인 Member 객체를 찾는다.
Member result =
em.createQuery("select m from Member m where m.username=:username", Member.class)
.setParameter("username", "member1")
.getSingleResult();
System.out.println(singleResult);
페이징 API
JPA는 페이징을 다음 두 API로 추상화한다.
- setFirstResult(int startPosition) : 조회 시작 위치 (0부터)
- setMaxResult(int maxResult): 조회할 데이터 수
List<Member> result = em.createQuery("select m from Member m order by m.age desc", Member.class)
.setFirstResult(0)
.setMaxResults(10)
.getResultList();
System.out.println("result.size() = " + result.size());
for (Member member1 : result){
System.out.println("member1 = " + member1);
}
Reference
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
초급자를 위해 준비한 [웹 개발, 백엔드] 강의입니다. JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자
www.inflearn.com