나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2025-12-12 07:39:23

ORM




1. 개요2. 필요성3. 기능4. ORM 구현체들5. 장점6. 단점7. ORM과 마이그레이션8. 관리 도구9. 한계10. 같이 보기

1. 개요

Object–Relational Mapping의 약자.

객체 지향 프로그래밍 언어에서 사용하는 객체(Object)와 관계형 데이터베이스테이블 간의 데이터를 자동으로 변환해 주는 기술 또는 그 기술을 구현한 라이브러리를 뜻한다. 줄여서 ORM이라고 부른다.

전통적으로 SQL 문을 직접 작성하여 DBMS와 통신하던 방식을 대신해, 개발자가 사용하는 프로그래밍 언어의 객체를 통해 데이터베이스를 조작할 수 있도록 도와준다.

2. 필요성

ORM이 등장한 이유는 객체 지향 언어와 관계형 데이터베이스 사이의 패러다임 불일치(impedance mismatch) 때문이다.

이러한 차이로 인해, SQL을 직접 작성할 때는 다음과 같은 반복 작업이 필연적으로 발생한다.
ORM은 이러한 변환 과정을 라이브러리가 자동으로 처리하여 개발 생산성을 높이고, 비즈니스 로직과 데이터 접근 로직을 분리할 수 있게 한다.

3. 기능

ORM 라이브러리들은 대체로 다음과 같은 기능을 제공한다.
특히 Prisma와 같은 최신 ORM은 타입 안전성(Type Safety)자동 완성 기능을 제공하여 IDE에서 개발 편의성을 극대화하고 있다.

4. ORM 구현체들

각 언어별 ORM 들을 소개한다.

5. 장점

6. 단점

ORM이 만능은 아니다. 복잡한 쿼리를 ORM으로만 처리하려다 보면 성능 저하나 예측 불가능한 SQL이 생성될 수 있다.

대규모 트래픽이나 고성능이 필요한 시스템에서는 ORM + Native SQL 병행 전략을 채택하는 경우가 많다.

7. ORM과 마이그레이션

현대의 ORM들은 단순히 객체-테이블 매핑에 그치지 않고, DB 스키마 버전 관리 및 마이그레이션 도구를 포함하는 경우가 많다.

예를 들어 Prisma의 경우 다음과 같은 방식으로 스키마와 DB를 동기화한다.

bash
# 스키마 변경
prisma migrate dev

# 실제 DB에 반영
prisma migrate deploy

이를 통해 팀 단위 개발에서 스키마 변경 이력을 안전하게 공유할 수 있으며, CI/CD 파이프라인에도 통합할 수 있다.

8. 관리 도구

대부분의 ORM은 자체 CLI나 GUI를 제공하거나, 기존 DB 관리 도구와 함께 사용한다.

Prisma Studio: Prisma에서 제공하는 웹 기반 GUI.

Doctrine Migrations: PHP 진영 ORM의 스키마 관리 도구.

Alembic: SQLAlchemy의 마이그레이션 관리 도구.

Sequelize CLI

ORM은 DBMS의 관리 도구와 병행해서 쓰는 경우가 많다. 예를 들어 Prisma를 쓰더라도 DBeaver나 DataGrip으로 DB 구조를 직접 조회·수정하는 식이다.

9. 한계

ORM은 DBMS를 대체하는 것이 아니다. 내부적으로는 결국 SQL을 생성해서 DBMS에 전달할 뿐이며, DB의 성능, 무결성 제약, 트랜잭션 처리 등은 여전히 DBMS의 영역이다.

또한 실시간 데이터 처리나 초대용량 분석 쿼리 등에서는 ORM이 적합하지 않다. 이러한 경우 NoSQL, 데이터 웨어하우스 혹은 ETL 파이프라인과 병행해서 사용한다.

10. 같이 보기

DBMS

SQL

NoSQL

Prisma