JPAExpressions
🧩 JPAExpressions
정의
JPAExpressions는 Querydsl에서 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로 다룰 때 자주 사용한다.
댓글남기기