ORM
개념데이터베이스를 SQL 대신 프로그래밍 언어의 문법으로 다루게 해 주는 번역 계층. 개발자는 "표와 행" 대신 익숙한 객체를 다루고, 실제 SQL 은 ORM 이 만들어 준다.
동의어: Object-Relational Mapping, 객체 관계 매핑
정의
ORM(Object-Relational Mapping)은 데이터베이스의 표(테이블)와 프로그래밍 언어의 객체를 서로 이어 주는 번역기다. 개발자가 파이썬 문법으로 쓰면 ORM 이 그것을 SQL 로 바꿔 데이터베이스에 보낸다.
비개발자를 위한 비유
데이터베이스는 SQL 이라는 외국어만 알아듣는 창고 관리인이다. 물건을 넣고 꺼낼 때마다 그 외국어로 말해야 한다.
ORM 은 그 사이에 선 통역사다. 개발자는 평소 쓰던 말(“이 회원의 주문 중 지난달 것만 가져와”)로 이야기하고, 통역사가 알아서 정확한 SQL 로 옮긴다.
왜 쓰는가
- 실수가 줄어든다 — 손으로 쓴 SQL 에서 흔히 생기는 오타·따옴표 사고(SQL 인젝션)를 구조적으로 막는다
- 갈아 끼우기 쉽다 — SQLite 로 만들고 나중에 PostgreSQL 로 옮겨도 코드 대부분이 그대로다
- 읽기 쉽다 — 업무 규칙이 SQL 문자열이 아니라 코드로 드러나 나중에 고치기 쉽다
한계
번역기이므로 아주 복잡하거나 성능이 중요한 조회는 사람이 직접 쓴 SQL 이 더 나을 때가 있다. 실무에서는 대부분을 ORM 으로 쓰고, 무거운 통계 조회만 SQL 로 내려쓰는 식으로 섞는다.
django와의 관계
Django 는 ORM 을 프레임워크 안에 기본으로 품고 있다. 모델을 한 번 정의하면 데이터베이스 표 생성, 조회, 관리자 화면까지 같은 정의에서 따라 나온다.