반응형
250x250
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 | 31 |
Tags
- mvvm패턴
- 백준 1935
- 빈 타입 조회
- Class Loader
- k번째큰수
- 스프링 싱글톤
- 참조형 매개변수
- 참조형 반환타입
- 스프링 컨테이너
- 팩토리패턴
- 옵저버 패턴
- 팩토리 패턴
- SOLID원칙
- 리버스 프록시
- try-catch
- removeAll
- 싱글톤 패턴
- 기본형 매개변수
- 후위표기식
- 포워드 프록시
- 쇠막대기
- TCP/IP 4계층
- 백준 2164
- www.naver.com치면 발생하는일
- 네트워크
- 전략 패턴
- 스프링
- @Tranctional
- 자바의 면접
- 스프링 빈
Archives
- Today
- Total
스파이더 웹 개발
객체 지향 쿼리 언어 본문
728x90
반응형
JPA는 다양한 쿼리 방법을 지원
- JPQL
- QueryDSL
- 네이티브 SQL
JPQL (객체지향 SQL)
검색을 할 때 테이블이 아닌 엔티티를 객체를 대상으로 검색
예제)
try {
List<Member> resultList = em.createQuery(
"select m from Member m where m.id like '%kim%'", Member.class
).getResultList();
tx.commit();
}
결과
Hibernate:
/* select
m
from
Member m
where
m.id like '%kim%' *
JPQL 문법
엔티티와 속성은 대소문자 구분을 해야한다
JPQL 키워드는 대소문자 구분 하지 않는다
결과 조회
query.getResultList(): 결과가 하나 이상일 때, 리스트 반환
- 결과가 없으면 빈 리스트 반환
query.getSingleResult(): 결과가 정확히 하나, 단일 객체 반환
- 결과가 없으면: javax.persistence.NoResultException
- 둘 이상이면: javax.persistence.NonUniqueResultException
파라미터 바인딩 - 이름 기준, (위치기준도 있으나 사용하지않는것을 매우 권장한다)
select m from Member m where m.username=:username
방식으로 사용하면된다
페이징
JPA는 페이징을 다음 두 API로 추상화 하였다
- setFirstResult : 조회 시작 위치
- setMaxResult : 조회할 데이터 수
서브 쿼리
JPA는 WHERE, HAVING 절에서만 서브 쿼리를 사용가능하게 해놓았다.
그러나 하이버네이트에서는 SELECT 절도 가능하게 지원하였다.
FROM절의 서브 쿼리는 현재 JPQL에서 불가능하므로 조인으로 해결하거나 native 쿼리로 해결한다
728x90
반응형
'JPA' 카테고리의 다른 글
엔티티 설계시 주의점 (0) | 2022.09.19 |
---|---|
객체 지향 쿼리 언어 - 2 (0) | 2022.09.17 |
값 타입 (0) | 2022.09.16 |
프록시와 연관관계 관리 (0) | 2022.09.16 |
고급 매핑 (0) | 2022.09.07 |
Comments