--- kind: CONCEPT slug: grpc-operation-ledger-jpa-c01 title: record를 지나지 않는 쓰기가 있어서 제약을 DB에도 둔다 topic: state-machines-and-ownership project: clean-architecture-backend-template status: 게시 전 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 rootTreeNode: concept:grpc-operation-ledger-jpa-c01 evidenceCapturedOn: 2026-09-01 assets: - key: grpc-operation-ledger-jpa-c01 file: ../../../final/evidence/rendered/grpc-operation-ledger-jpa-c01.svg evidence: - ../../../final/evidence/raw/grpc-operation-ledger-jpa-c01.txt source: - 원본 분석 절은 analysis/grpc/grpc-operation-ledger-jpa.md#L53 이다. module: grpc-operation-ledger-jpa --- # record를 지나지 않는 쓰기가 있어서 제약을 DB에도 둔다 마이그레이션 헤더가 왜 애플리케이션 검사가 아니라 제약인지 적는다. 마이그레이션·백필·지원 스크립트가 쓴 행은 record를 지나지 않기 때문이다. ## 본문 마이그레이션 헤더가 왜 애플리케이션 검사가 아니라 제약인지 적는다. 커밋 행이 결과를 반드시 갖는다는 검사를 자바 record 와 DB 양쪽에 둔 이유도 적혀 있다 — 마이그레이션·백필·지원 스크립트가 쓴 행은 record 를 지나지 않는다. ## 이 기록이 다루는 파일 범위 :::evidence key="grpc-operation-ledger-jpa-c01" alt="코드베이스에서 파일 목록을 만든 출력 3줄. 이 기록이 다루는 범위가 그 목록이다." caption="코드베이스 파일 목록 — 3줄 · exit 0" zoom="true" ::: ## 전용 Flyway 위치를 쓰는 이유 `db/migration/grpc`를 쓴다. gRPC 플랫폼을 채택하지 않은 배포가 이 테이블을 만들도록 강요받지 않기 위해서다.