인프런 커뮤니티 질문&답변

이상민님의 프로필 이미지
이상민

작성한 질문수

실전! Querydsl

동적 쿼리와 성능 최적화 조회 - Where절 파라미터 사용

동적 쿼리 생성시 질문이 있습니다. (+패치조인)

작성

·

522

0

안녕하세요 항상 강의 잘보고 있습니다.

현재 강의에서 알려주신것을 토대로 토이프로젝트를 진행하고 있습니다. 토이프로젝트를 진행하던중 동적 쿼리 관련하여 이슈가 생겼고 해당 이슈를 해결하기위해 궁리를 하던 중 궁금한 점이 생겨 질문드립니다.

현재 강의에서는 조건절에 BooleanExpression을 이용해서 동적으로 쿼리를 생성하고 있는데 혹시 join절에도 동적 쿼리를 적용할수 있는지 궁금합니다. 만약 적용이 가능하다면 어떤식으로 가능한지 궁금합니다.

추가로 패치조인에 대해서 질문이 있습니다. ToOne관계에 있어서는 기존 전략을 지연로딩으로 가져가되 연관관계가 걸려있는 객체에 대해서 선택적으로 fetch join을 사용하라고 이해했습니다. 여기서 질문은 Querydsl에서 @QueryProhection을 사용하여 DTO로 조회를 할때는 fetch join을 사용할수는 없는지 궁금합니다.

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 이상민님

join절의 경우 다음과 같이 적용해야 합니다.

query.from(qUser);

if (조건1) {
    query.leftJoin(qUser.orders, qOrder).on(qOrder.amount.gt(100));
}

List<User> users = query.fetch();

 

패치 조인의 경우 패치 조인이라는 기능 자체가 엔티티를 직접 조회할 때 연관된 엔티티도 함께 조회하는 기능입니다. 따라서 이 기능은 엔티티를 조회할 때만 가능합니다. DTO를 조회할 때는 fetch join 대신에 일반적인 sql에서 사용하는 join을 사용하시면 됩니다.

감사합니다.

이상민님의 프로필 이미지
이상민

작성한 질문수

질문하기