Querydsl InlineView
🧩 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에서는 직접 지원이 제한적이라 서브쿼리 우회가 일반적이다.
- 복잡한 조회를 단계별로 나누는 사고방식으로 이해하면 좋다.
댓글남기기