--- kind: CONCEPT slug: adapter-outbound-persistence-jpa-c38 title: SQL 식별자를 호출자가 조립하지 않는다 topic: state-machines-and-ownership project: clean-architecture-backend-template status: 게시 전 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 rootTreeNode: concept:adapter-outbound-persistence-jpa-c38 evidenceCapturedOn: 2026-09-01 assets: - key: adapter-outbound-persistence-jpa-c38 file: ../../../final/evidence/rendered/adapter-outbound-persistence-jpa-c38.svg evidence: - ../../../final/evidence/raw/adapter-outbound-persistence-jpa-c38.txt source: - 원본 분석 절은 analysis/05-adapter-outbound-persistence-jpa.md#L2780 이다. module: adapter-outbound-persistence-jpa --- # SQL 식별자를 호출자가 조립하지 않는다 native write와 COPY는 caller가 임의 SQL identifier를 조립하도록 두지 않고 registered statement/name boundary를 사용한다. 값은 JDBC parameter 또는 COPY stream으로 전달된다. ## 본문 native write와 COPY는 caller가 임의 SQL identifier를 조립하도록 두지 않고 registered statement/name boundary를 사용한다. 값은 JDBC parameter 또는 COPY stream으로 전달된다. ## 분석 원문의 경계 확인 :::evidence key="adapter-outbound-persistence-jpa-c38" alt="분석 문서 analysis/05-adapter-outbound-persistence-jpa.md 에서 이 기록의 근거 절을 그대로 잘라낸 15줄. 코드베이스를 측정한 것이 아니라 원본 판정이 무엇을 적었는지를 보여 준다." caption="analysis/05-adapter-outbound-persistence-jpa.md 발췌 — 15줄" zoom="true" ::: ## 각 경로가 두는 경계 COPY에는 format/size bound와 transaction requirement가 있고, work claiming은 등록된 queue definition과 PostgreSQL `FOR UPDATE ... SKIP LOCKED` 경계를 사용한다. JSON path/query support와 range query support도 registry/typed value boundary를 두고 실제 값은 bind한다. constraint translation 역시 structured SQLSTATE/server fields를 사용한다. ## 이번 sub-scope의 결론 이 영역의 새로운 SQL-injection/runtime-wiring defect는 확인되지 않았다.