JPQL

· JPA
객체지향 쿼리와 관련된 다양한 고급 주제를 알아보자. 벌크 연산 엔티티를 수정하려면 영속성 콘텍스트의 변경 감지 기능이나 병합을 사용하고, 삭제하려면 EntityManager.remove() 메서드를 사용한다. 하지만 이 밥벙으로 수백 개 이상의 엔티티를 하나씩 처리하기에는 시간이 너무 오래 걸린다. 이때 여러 건을 한 번에 수정하거나 삭제하는 벌크 연산을 사용하면 된다. // 재고가 10개 미만인 상품의 가격을 10% 상승 String sql = "UPDATE product p SET p.price = p.price * 1.1 WHERE p.stockAmount < :stockAmount"; int resultCount = em.createQuery(sql).setParameter("stockAmoun..
· JPA
서브 쿼리 함수 JPQL도 SQL처럼 서브 쿼리를 지원한다. 여기서는 몇 가지 제약이 있는데, 서브쿼리를 WHERE, HAVING 절에만 사용할 수 있고 SELECT, FROM 절에서는 사용할 수 없다. 하이버네이트의 HQL은 SELECT 절의 서브 쿼리도 허용한다. 하지만 아직까지 FROM 절의 서브 쿼리는 지원하지 않는다. 일부 JPA 구현체는 FROM 절의 서브 쿼리도 지원한다. // 평균 나이보다 나이가 많은 회원 조회 "SELECT m FROM Member m WHERE m.age > (SELECT avg(m2.age) FROM Member m2)" // 한번이상 주문한 회원 조회 "SELECT m FROM member m WHERE (SELECT COUNT(o) FROM Order o WHER..
· JPA
경로 표현식이라는 것은 쉽게 이야기해서 .(점)을 찍어 객체 그래프를 탐색하는 것이다. "SELECT m.username FROM Member m JOIN m.team t JOIN m.orders o WHERE t.name = '팀A'" 여기서 m.usernam, m.team, m.orders, t.name이 모두 경로 표현식을 사용한 예다. 경로 표현식의 용어 정리 상태 필드(state field) 단순한 값을 저장하기 위한 필드(필드 or 프로터티) 연관 필드(association field) 연관 관계를 위한 필드, 임베디드 타입 포함(필드 or 프로터티) - 단일 값 연관 필드 : @ManyToOne, @OneToOne, 대상이 엔티 - 컬렉션 값 연관 필드 : @OneToMany, @ManyTo..
· JPA
페치 조인은 SQL에서 이야기하는 조인의 종류는 아니고 JPQL에서 성능 쵝적화를 위해 제공하는 기능이다. 연관덴 엔티티나 컬렉션을 한번에 조회하는 기능인데 join fetch 명령어로 사용할 수 있다. JPQL이 무엇인지 모르겠다면 아래 블로그 글을 참고 바란다. 객체 지향 쿼리 소개(JPQL, Criteria, Native, QueryDSL) JPA를 사용하면 EntityManager.find(), 객체 그래프 탐색(member.getTeam())과 같은 기능만으로 개발하기는 어렵다. 그리고 데이터베이스 테이블이 아닌 엔티티 객체를 대상으로 개발하므로 엔티티 객체를 devbksheen.tistory.com 엔티티 페치 조인 JPQL에서는 조인은 별칭을 사용할 수 없지만 하이버네이트는 별칭은 허용한다...
· JPA
JPA를 사용하면 EntityManager.find(), 객체 그래프 탐색(member.getTeam())과 같은 기능만으로 개발하기는 어렵다. 그리고 데이터베이스 테이블이 아닌 엔티티 객체를 대상으로 개발하므로 엔티티 객체를 대상으로 하는 방법이 필요하다. JPA는 복잡한 검색 조건을 사용해서 엔티티 객체를 조회할 수 있는 다양한 쿼리 기술을 지원한다. JPQL(Java Persistence Query Language) Criteria 쿼리(Criteria Query) : JPQL을 편하게 작성하도록 도와주는 API, 빌더 클래스 모음 네이티브 SQL(Native SQL) : JPA에서 JPQL 대신 직접 SQL을 사용할 수 있다. QueryDSL : Criteria 쿼리처럼 JPQL을 편하게 작성하도..
beekei
'JPQL' 태그의 글 목록