Spring52 JPQL 서브쿼리 JPQL 서브 쿼리 한계 JPA는 WHERE, HAVING 절에서만 서브 쿼리 사용 가능 SELECT 절도 가능(하이버네이트 지원) FROM 절의 서브 쿼리는 현재 JPQL에서 불가능 조인으로 풀 수 있으면 풀어서 해결 Reference 자바 ORM 표준 JPA 프로그래밍 2021. 5. 23. JPQL 조인 조인 내부 조인 : SELECT m FROM Member m [INNER] JOIN m.team t 외부 조인 : SELECT m FROM Member m LEFT [OUTER] JOIN m.team t 세타 조인 : SELECT count(m) FROM Member m, Team t WHERE m.username = t.name 조인 - ON절 ON절을 활용한 조인(JPA 2.1부터 지원) 1. 조인 대상 필터링 2. 연관관계 없는 엔티티 외부 조인(하이버네이트 5.1부터) 1. 조인 대상 필터링 예) 회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인 JPQL : SELECT m, t FROM Member m, LEFT JOIN m.team t on t.name = 'A' SQL : SELECT m... 2021. 5. 22. JPQL 페이징 페이징 API JPA는 페이징을 다음 두 API로 추상화 setFirstResult(int startPosition) : 조회 시작 위치(0부터 시작) setMaxResults(int maxResult) : 조회할 데이터 수 Reference 자바 ORM 표준 JPA 프로그래밍 2021. 5. 22. JPQL 프로젝션(SELECT) 프로젝션 SELECT 절에 조회할 대상을 지정하는 것 프로젝션 대상 : 엔티티, 임베디드 타입, 스칼라 타입(숫자, 문자 등 기본 데이터 타입) SELECT m FROM Member m -> 엔티티 프로젝션 SELECT m.team FROM Member m -> 엔티티 프로젝션 SELECT m.address FROM Member m -> 임베디드 타입 프로젝션 SELECT m.username, m.age FROM Member m -> 스칼라 타입 프로젝션 DISTINCT로 중복 제거 프로젝션 - 여러 값 조회 SELECT m.username, m.age FROM Member m 1. Query 타입으로 조회 2. Object[] 타입으로 조회 3. new 명령어로 조회 단순 값을 DTO로 바로 조회 SE.. 2021. 5. 21. JPQL 기본 문법과 쿼리 API JPQL 문법 select m from Member as m where m.age > 18 엔티티와 속성은 대소문자 구분O (Member, age) JPQL 키워드는 대소문자 구분X (select, from, where) 엔티티 이름 사용(Member), 테이블 이름이 아니다. 별칭은 필수(m) (as는 생략가능) TypeQuery, Query TypeQuery : 반환 타입이 명확할 때 사용 Query : 반환 타입이 명확하지 않을 때 사용 결과 조회 API query.getResultList() : 결과가 하나 이상일 때, 리스트 변환 결과가 없으면 빈 리스트 반환 query.getSingleResult() : 결과가 정확히 하나, 단일 객체 반환 결과가 없으면 : javax.persistence.N.. 2021. 5. 21. JPQL JPA는 다양한 쿼리 방법을 지원한다. JPQL JPA criteria QueryDSL 네이티브 SQL JDBC API 직접 사용, Mybatis, SpringJdbcTemplate 함께 사용 JPQL 소개 가장 단순한 조회 방법 EntityManager.find() 객체 그래프 탐색(a.getB().getc()) 나이가 18살 이상인 회원을 모두 검색하고 싶다면? JPQL JPA를 사용하면 엔티티 객체를 중심으로 개발 문제는 검색 쿼리 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요 JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제.. 2021. 5. 20. 이전 1 ··· 3 4 5 6 7 8 9 다음