--- kind: CONCEPT slug: adapter-outbound-persistence-jpa-c30 title: Querydsl은 production runtimeClasspath에 들어오지 않는다 topic: state-machines-and-ownership project: clean-architecture-backend-template status: 게시 전 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 rootTreeNode: concept:adapter-outbound-persistence-jpa-c30 evidenceCapturedOn: 2026-09-01 assets: - key: adapter-outbound-persistence-jpa-c30 file: ../../../final/evidence/rendered/adapter-outbound-persistence-jpa-c30.svg evidence: - ../../../final/evidence/raw/adapter-outbound-persistence-jpa-c30.txt source: - 원본 분석 절은 final/document.md#a05#L2087 이다. module: adapter-outbound-persistence-jpa --- # Querydsl은 production runtimeClasspath에 들어오지 않는다 `QuerydslJpaSupport`는 Advanced opt-in으로 설계돼 있고, lockfile에서 Querydsl은 compileClasspath와 test/integration/performance classpath에만 나타난다. ## 본문 `QuerydslJpaSupport`는 Advanced opt-in으로 설계돼 있다. lockfile에서 Querydsl은 compileClasspath와 test/integration/performance classpath에는 나타나지만 production `runtimeClasspath` configuration에는 포함되지 않는다. ## QuerydslJpaSupport 참조 위치 :::evidence key="adapter-outbound-persistence-jpa-c30" alt="코드베이스에서 QuerydslJpaSupport 를 검색한 출력 3줄. 이 기록이 세는 참조가 그 출력에 그대로 보인다." caption="QuerydslJpaSupport 코드베이스 검색 — 3줄 · exit 0" zoom="true" ::: ## helper가 두는 제한 따라서 JPA leaf를 사용하는 것만으로 Querydsl runtime dependency가 Stable deployment에 따라오는 구조는 아니다. `QuerydslJpaSupport`도 bounded page size <= 500, null predicate는 explicit unbounded opt-in 없으면 거부, 등록된 `QueryName`을 Hibernate comment hint로 적용이라는 제한을 둔다. ## 미채택 상태로 기록한다 현재 production consumer는 확인되지 않았다. 이는 Advanced opt-in helper의 미채택 상태로 기록하며 dead-code defect로 단정하지 않는다.