Querydsl - 중급문법(1)

LEE ·2023년 9월 18일

Querydsl

목록 보기
4/10

1. 프로젝션과 결과 반환 - 기본

1-1. 프로젝션: select 대상 지정( 프로젝션 대상이 하나 )

프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있음

1-2. 튜플 조회 ( 프로젝션 대상이 둘 이상일 때 사용 )

com.querydsl.core.Tuple


2. 프로젝션과 결과 반환 - DTO 조회

MEmberDto

순수 JPA에서 DTO 조회 코드

  • 순수 JPA에서 DTO를 조회할 때는 new 명령어를 사용해야함
  • DTO의 package이름을 다 적어줘야해서 지저분함
  • 생성자 방식만 지원함

Querydsl 빈 생성(Bean population)

결과를 DTO 반환할 때 다음 3가지 방법 지원
1. 프로퍼티 접근
2. 필드 직접 접근
3. 생성자 사용

2-1. 프로퍼티 접근 - Setter

2-2. 필드 직접 접근

2-3. 생성자 사용

별칭이 다를 때

프로퍼티나, 필드 접근 생성 방식에서 이름이 다를 때 해결 방안

ExpressionUtils.as(source,alias) : 필드나, 서브 쿼리에 별칭 적용

username.as("name") : 필드에 별칭 적용


3. 프로젝션과 결과 반환 - @QueryProjection

생성자 + @QueryProjection

./gradlew compileQuerydsl

QMemberDto 생성 확인

방법은 컴파일러로 타입을 체크할 수 있으므로 가장 안전한 방법이다. 다만 DTO에 QueryDSL 어노테이션을 유지해야 하는 점과 DTO까지 Q 파일을 생성해야 하는 단점이 있다.

0개의 댓글