ORM은 SQL을 없애지 않고 생성 경계를 감싼다

도메인 모델에서 시작한 호출이 어떤 SQL로 바뀌는지 보이는 상태에서 편의 경로와 성능 경로를 나눈다.

Entity테이블·컬럼·관계 metadata
Repository / QueryBuilder조회 의도를 API로 표현
ORM boundarymapping · unit of work · transaction
SQL → DatabaseJOIN · index · lock이 실제 비용을 결정

반복 CRUD: 편의 경로

repo.find()단순 조건과 관계 로딩
repo.save()변경 감지와 저장

성능 핵심: 탈출 경로

QueryBuilderJOIN·집계·페이지네이션을 명시
raw SQL쿼리 모양을 직접 고정
Query log + EXPLAINN+1, 암시적 lazy loading, 잘못된 index를 확인해 경로를 다시 선택한다.Migration → schema