자바 ORM 표준 JPA 프로그래밍51 정렬 desc(), asc() : 일반 정렬 nullsLast(), nullsFirst() : null 데이터 순서 부여 Reference 자바 ORM 표준 JPA 프로그래밍 QueryDSL 2021. 6. 1. JPQL - 벌크 연산 벌크 연산 주의 벌크 연산은 영속성 컨텍스트를 무시하고 데이터베이스에 직접 쿼리 벌크 연산을 먼저 실행 벌크 연산 수행 후 영속성 컨텍스트 초기화 Reference 자바 ORM 표준 JPA 프로그래밍 2021. 5. 31. JPQL - Named 쿼리 Named 쿼리 - 정적 쿼리(Spring Data JPA에서는 @Query로 해결) 미리 정의해서 이름을 부여해두고 사용하는 JPQL 정적 쿼리 어노테이션, XML에 정의 애플리케이션 로딩 시점에 초기화 후 재사용 애플리케이션 로딩 시점에 쿼리를 검증 Named 쿼리 환경에 따른 설정 XML이 항상 우선권을 가진다. 애플리케이션 운영 환경에 따라 다른 XML을 배포할 수 있다. Reference 자바 ORM 표준 JPA 프로그래밍 2021. 5. 30. JPQL - 엔티티 직접 사용 엔티티 직접 사용 - 기본 키 값 JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용 [JPQL] select count(m.id) from Member m // 엔티티의 아이디를 사용 select count(m) from Member m // 엔티티를 직접 사용 [SQL] (JPQL 둘다 같은 SQL 실행) select count(m.id) as cnt from Member m Reference 자바 ORM 표준 JPA 프로그래밍 2021. 5. 29. JPQL - 다형성 쿼리 TYPE 조회 대상을 특정 자식으로 한정 예) Item중에 Book, Movie를 조회해라 [JPQL] select i from Item i where type(i) IN (Book, Movie) [SQL] select i from i where i.DTYPE IN ('B', 'M') TREAT(JPA 2.1) 자바의 타입 캐스팅과 유사 상속 구조에서 부모 타입을 특정 자식 타입으로 다룰 때 사용 FROM, WHERE, SELECT(하이버네이트 지원) 사용 예) 부모인 Item과 자식 Book이 있다. [JPQL] select i from Item i where treat(i as Book).author = 'kim' [SQL] select i.* from Item i where i.DTYPE = 'B'.. 2021. 5. 28. JPQL 패치 조인2 - 한계 패치 조인의 특징과 한계 패치 조인 대상에는 별칭을 줄 수 없다. 둘 이상의 컬렉션은 패치 조인 할 수 없다. 컬렉션을 패치 조인하면 페이징 API(setFirstResult, setMaxResults)를 사용할 수 없다. 연관된 엔티티들을 SQL 한 번으로 조회 - 성능 최적화 엔티티에 직접 적용하는 글로벌 로딩 전략보다 우선한다. @OneToMany(fetch = FetchType.LAZY) // 글로벌 로딩 전략 실무에서 글로벌 로딩 전략은 모두 지연 로딩 최적화가 필요한 곳은 패치 조인 적용 패치 조인 - 정리 모든 것을 패치 조인으로 해결할 수는 없다. 패치 조인은 객체 그래프를 유지할 때 사용하면 효과적 여러 테이블을 조인해서 엔티티가 가진 모양이 아닌 전혀 다른 결과를 내야 하면, 패치 조인.. 2021. 5. 27. 이전 1 2 3 4 5 6 7 ··· 9 다음