{ "version": "1.1", "id": "adapter-outbound-persistence-jpa-c26", "audience": [ "플랫폼 어댑터를 읽는 사람" ], "source_context": { "document": "docs/clean-architecture-backend-template/final/document.md", "document_sha256": "8071fe71b3359d9cf60b95909c26c7b50653ce2f22bbc5fcf6988719bb91236d", "anchor": { "kind": "line", "value": 5598, "line": 5598 } }, "groups": [], "legend": [], "metadata": {}, "title": "쓰기 경로마다 다른 소유 모델", "question": "세 쓰기 경로는 트랜잭션 소유를 어떻게 다르게 다루는가?", "type": "dependency", "direction": "LR", "summary": "같은 저장소 호출처럼 보여도 세 경로가 트랜잭션 경계와 엔티티 수명주기를 다르게 다룬다.", "alt": "쓰기 경로에서 일반 repository adapter 와 bulk DML 과 StatelessSession runner 로 갈라진다.", "long_description": "SSOT §40 은 Hibernate bulk DML 과 StatelessSession 이 각각 엔티티 수명주기를 우회하고 트랜잭션 경계를 스스로 소유한다고 적는다. 세 경로는 같은 저장소 호출처럼 보이지만 감사와 수명주기 보장이 같지 않다.", "composition": { "profile": "component-flow", "diagram_only": true, "reference_ids": [ "payment-event-flow" ], "rationale": "한 쓰기 요청이 어느 경로로 가느냐에 따라 소유 모델이 갈리는 방향이 논지다.", "focus_node": "write" }, "nodes": [ { "id": "write", "label": "쓰기 경로", "kind": "service", "role": "source", "evidence": [ { "start_line": 5598, "end_line": 5612 } ], "assumption": false, "emphasis": "primary" }, { "id": "repo", "label": "일반 repository adapter", "kind": "service", "role": "sink", "evidence": [ { "start_line": 5598, "end_line": 5600 } ], "assumption": false }, { "id": "bulk", "label": "bulk DML", "kind": "service", "role": "sink", "evidence": [ { "start_line": 5598, "end_line": 5612 } ], "assumption": false }, { "id": "stateless", "label": "StatelessSession runner", "kind": "service", "role": "sink", "evidence": [ { "start_line": 5613, "end_line": 5620 } ], "assumption": false } ], "edges": [ { "id": "a", "from": "write", "to": "repo", "label": "경계에 참여", "kind": "request", "evidence": [ { "start_line": 5598, "end_line": 5600 } ], "assumption": false }, { "id": "b", "from": "write", "to": "bulk", "label": "엔티티 수명주기 우회", "kind": "request", "evidence": [ { "start_line": 5598, "end_line": 5612 } ], "assumption": false }, { "id": "c", "from": "write", "to": "stateless", "label": "경계 자체 소유", "kind": "request", "evidence": [ { "start_line": 5613, "end_line": 5620 } ], "assumption": false, "emphasis": "primary" } ] }