🧩 JPAExpressions

정의

JPAExpressionsQuerydsl에서 JPA용 서브쿼리나 표현식을 생성할 때 사용하는 도구이다. 복잡한 조건이나 하위 조회를 where, select 안에서 직접 표현할 수 있게 해준다.

주로 서브쿼리 작성이 필요할 때 사용한다.

🧩 역할

  • JPA 서브쿼리를 생성한다
  • Querydsl 조건식 안에서 하위 조회를 구성한다
  • 복잡한 조회 조건을 표현한다
  • JPAQuery와 함께 사용할 수 있다

🛠 사용법

서브쿼리 예시

Long count = queryFactory
        .select(qProcessVersion.processVersionSequence.count())
        .from(qProcessVersion)
        .where(
                qProcessVersion.processSequence.in(
                        JPAExpressions
                                .select(qProcessVersion.processSequence)
                                .from(qProcessVersion)
                                .where(qProcessVersion.removeYn.eq("N"))
                )
        )
        .fetchOne();

비교 예시

qUser.id.eq(
        JPAExpressions
                .select(qOrder.user.id)
                .from(qOrder)
                .where(qOrder.status.eq("ACTIVE"))
)

🧩 특징

  • Querydsl과 함께 사용한다
  • 서브쿼리를 표현식처럼 다룰 수 있다
  • where()select() 내부에서 활용 가능하다
  • 복잡한 조회 조건을 코드로 표현하기 좋다

⚠️ 주의사항

  • JPAExpressions는 Querydsl 전용 도구다.
  • 서브쿼리가 길어지면 가독성이 떨어질 수 있다.
  • 필요한 경우 별도 메서드로 분리하는 것이 좋다.
  • DB 실행 계획에 따라 성능 영향을 검토해야 한다.

📌 정리

  • JPAExpressions는 Querydsl에서 JPA 서브쿼리를 만들 때 사용하는 도구다.
  • 조건식 안에서 하위 조회를 표현할 때 유용하다.
  • 복잡한 조건을 Querydsl로 다룰 때 자주 사용한다.

연결문서

댓글남기기