ORM Boundary
ORM과 SQL 균형은 로그와 실행 계획으로 닫는다
ORM은 생산성 도구이고 SQL은 검증 표면이다. 쿼리 수, SQL 모양, 계획, 배포 경계를 한 체크리스트에서 같이 본다.
개발도메인 변경은 ORM으로 빠르게 표현한다.
검증SQL 로그와 실행 계획으로 실제 비용을 확인한다.
통제복잡한 조회, bulk, migration, raw SQL은 명시 경계로 분리한다.
| 위험 지점 | 로그에서 볼 신호 | 통제 방법 | A급 운영 기준 |
|---|---|---|---|
| N+1 | 목록 1회 뒤 같은 SELECT가 행 수만큼 반복 | fetch join, batch fetch, DTO projection | 주요 목록 API의 query count 예산이 있다 |
| 과도한 fetch | join이 너무 넓거나 중복 row가 급증 | 화면별 필요한 관계만 명시 | 실행 계획과 반환 row 수를 함께 본다 |
| Bulk 변경 | 영속성 컨텍스트와 DB 값이 어긋남 | flush/clear 경계와 별도 트랜잭션 | bulk 뒤 재조회 또는 캐시 무효화 규칙이 있다 |
| 마이그레이션 | 코드 배포와 DDL 순서가 맞지 않음 | 확장-백필-전환-축소 순서 | 되돌릴 수 있는 변경 단위로 배포한다 |
| Raw SQL | 문자열 조합, 동적 컬럼/정렬 삽입 | 값은 바인딩, 구조는 allowlist | SQL 로그와 보안 리뷰가 같은 체크리스트에 있다 |