728x90
반응형
JPQL 문법
- JPQL 문법은 쿼리와 유사하다.
- 엔티티와 속성은 대소문자 구분한다.(Member, age 처럼)
- select m from Member as m where m.age > 18
- 객체에 있는것과 동일하게 써야 한다. - JPQL 키워드는 대소문자 구분이 없다.
- select, from where 등
select
select 절
from 절
[where 절]
[groupby 절]
[having 절]
[orderby 절]
update
update 절 [where]
Delete
delete 절 [where]
집합과 정렬
select
COUNT(m) // 회원수
SUM(m.age) // 나이합
AVG(m.age) // 평균나이
MAX(m.age) // 최대 나이
MIN(m.age) // 최소 나이
from Member m
TypeQuery, Query
- TypeQuery: 반환 타입이 명확할 때 사용
- Query: 반환 타입이 명확하지 않을때 사용
// 타입 정보를 적어 주었기 때문에 TypedQuery 로 선언함
TypedQuery<JPQLMember> query1 = em.createQuery("select m from JPQLMember m where m.username = :username", JPQLMember.class)
.setParameter("username","member1");
Query query2 = em.createQuery("select m.username, m.age from JPQLMember m");
결과조회
- getResultLIst:
- 결과가 하나이상 일때 써준다. - getSingleResult:
- 결과가 하나일때만 getSingleResult 를 써줘야 한다.
- 결과가 여러개 이거나 아예 없을경우 Exception이 발생한다.
파라미터 바인딩
- 문자기반으로 바인딩을 해줄수 있다.
JPQLMember singleResult = em.createQuery("select m from JPQLMember m where m.username = :username", JPQLMember.class)
.setParameter("username","member1")
.getSingleResult();
- 위치기반도 가능하지만 사용하지 말자.
- 숫자로 위치를 지정하면 또 바인딩될 변수가 추가 되었을때 수정이 많이 필요하다
- 버그가 발생할 수 있다.
728x90
반응형
'DataBase > JPA' 카테고리의 다른 글
[JPA] JPQL 페이징 (0) | 2021.09.24 |
---|---|
[JPA] JPQL 프로젝션 (0) | 2021.09.24 |
[JPA] JPQL 이란? (0) | 2021.09.23 |
[JPA] 값타입 컬렉션 (0) | 2021.09.17 |
[JPA] 값타입 (0) | 2021.08.22 |
댓글