🧩 Querydsl InlineView

정의

Querydsl InlineView쿼리 안에서 만들어진 중간 결과를 임시 테이블처럼 다루는 개념이다. 다만 JPA용 Querydsl에서는 FROM 절 인라인 뷰를 직접 쓰는 데 제한이 있어, 보통 서브쿼리로 우회한다.

실무에서는 집계 결과를 필터링하거나 중간 조건을 나누고 싶을 때 관련 개념으로 이해하면 좋다.

🧩 역할

  • 중간 집계 결과를 활용한다
  • 복잡한 조회 로직을 나눈다
  • 서브쿼리로 우회해 조건을 구성한다
  • 조회 로직을 단계별로 분리한다

🛠 사용 예시

서브쿼리로 우회

List<User> users = queryFactory
        .selectFrom(qUser)
        .where(
                qUser.id.in(
                        JPAExpressions
                                .select(qOrder.user.id)
                                .from(qOrder)
                                .where(qOrder.status.eq("COMPLETED"))
                                .groupBy(qOrder.user.id)
                )
        )
        .fetch();

집계 결과 활용

List<OrderSummary> summaries = queryFactory
        .selectFrom(qOrderSummary)
        .where(qOrderSummary.totalPrice.gt(100000))
        .fetch();

🧩 특징

  • JPA Querydsl에서는 인라인 뷰 직접 사용이 제한적이다
  • 서브쿼리로 유사한 효과를 낼 수 있다
  • 복잡한 조건을 단계별로 나누기 좋다
  • 조회 결과를 다시 필터링하는 패턴에 적합하다

⚠️ 주의사항

  • JPA Querydsl에서는 FROM 절 인라인 뷰를 직접 지원하지 않는 경우가 많다.
  • 실제로는 JPAExpressions나 별도 조회 메서드로 우회하는 편이 안전하다.
  • 인라인 뷰가 꼭 필요하면 네이티브 SQL이나 Querydsl SQL을 검토해야 한다.
  • 쿼리 구조가 너무 복잡해지면 가독성이 떨어질 수 있다.

📌 정리

  • Querydsl InlineView는 중간 결과를 임시 테이블처럼 다루는 개념이다.
  • JPA Querydsl에서는 직접 지원이 제한적이라 서브쿼리 우회가 일반적이다.
  • 복잡한 조회를 단계별로 나누는 사고방식으로 이해하면 좋다.

연결문서

댓글남기기