본문 바로가기

Spring52

페이징 조회 건수 제한 전체 조회 수가 필요하면? 주의 : count 쿼리가 실행되니 성능상 주의! 참고 : 실무에서 페이징 쿼리를 작성할 때, 데이터를 조회하는 쿼리는 여러 테이블을 조인해야 하지만, count 쿼리는 조인이 필요 없는 경우도 있다. 그런데 이렇게 자동화된 count 쿼리는 원본 쿼리와 같이 모두 조인을 해버리기 때문에 성능이 안나올 수 있다. count 쿼리에 조인이 필요없는 성능 최적화가 필요하다면, count 전용 쿼리를 별도로 작성해야 한다. Reference 자바 ORM 표준 JPA 프로그래밍 QueryDSL 2021. 6. 2.
정렬 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.