JPA 20

querydsl 서브쿼리

com.querydsl.jpa.JPAExpressions 사용 서브 쿼리 eq 사용 - 나이가 가장 많은 회원 조회 서브 쿼리 goe 사용 select 절에 subquery static import 활용 from 절의 서브쿼리 한계 JPA JPQL 서브쿼리의 한계점으로 from 절의 서브쿼리(인라인 뷰)는 지원하지 않는다. 당연히 Querydsl 도 지원하지 않는다. 하이버네이트 구현체를 사용하면 select 절의 서브쿼리는 지원한다. Querydsl도 하이버네이트 구현체를 사용하면 select 절의 서브쿼리를 지원한다 from 절의 서브쿼리 해결방안 서브쿼리를 join으로 변경한다.(가능한 상황도 있고, 불가능한 상황도 있다.) 애플리케이션에서 쿼리를 2번 분리해서 실행한다. nativesSQL을 사용..

querydsl 조인 - 기본조인

1. 기본 조인 조인의 기본 문법은 첫 번째 파라미터에 조인 대상을 지정하고, 두 번째 파라미터에 별칭(alias)으로 사용할 Q 타입을 지정하면 된다. /* * 팀 A에 소속된 모든 회원 * */ @Test public void join(){ List result = queryFactory .selectFrom(member) .leftJoin(member.team, team) .where(team.name.eq("teamA")) .fetch(); assertThat(result) .extracting("username") .containsExactly("member1", "member2"); } join( ) , innerJoin( ) :내부 조인(inner join) leftJoin( ) : left..

querydsl 정렬

desc( ) : 내림차순 asc( ) : 올림 차순 nullsLast( ) , nullsFirst( ) : null 데이터 순서부여 /* * 회원 정렬 순서 * 1. 회원 나이 내림차순(desc) * 2. 회원 이름 올림차순(asc) * 단 2에서 회원 이름이 없으면 마지막에 출력(nuls last) * * */ } @Test public void sort(){ em.persist(new Member(null, 100)); em.persist(new Member("member5", 100)); em.persist(new Member("member6", 100)); List result = queryFactory .selectFrom(member) .where(member.age.eq(100)) .ord..

결과 조회

1. 결과 조회 fetch( ) : 리스트 조회 , 데이터 없으면 빈 리스트 반환 fetchOne( ) : 단 건 조회 결과가 없으면 : null 결과가 둘 이상이면 : com.querydsl.core.NonUniqueResultException fetchFirst( ) : limit(1) . fetchOne( ) fetchResults( ) : 페이징 정보 포함, total count 쿼리 추가실행 fetchCount( ) : count 쿼리로 변경해서 count 수 조회 @Test public void resultFetch(){ List fetch = queryFactory .selectFrom(member) .fetch(); //멤버에 목록을 리스트로 조회 Member fetchOne = query..

Spring Boot, Gradle 환경에 Querydsl 설정

queryDslVersion이 변경되어 Gradle 설정 하는데 시간이 좀 걸렸다 .. buildscript{ ext { queryDslVersion = "5.0.0" } } plugins { id 'org.springframework.boot' version '2.7.4' id 'io.spring.dependency-management' version '1.0.14.RELEASE' id 'java' //querydsl 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' configurations { compileOnly ..

프로젝트생성

프로젝트 생성 Gradle 전체 설정 QueryDslVersion이 변경되어 구글링해서 찾는데 시간이 좀 걸렸다 buildscript{ ext { queryDslVersion = "5.0.0" } } plugins { id 'org.springframework.boot' version '2.7.4' id 'io.spring.dependency-management' version '1.0.14.RELEASE' id 'java' //querydsl 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' configurations ..