blevels

Home / AI / AI 용어사전 / ORM — SQL 없이 코드로 DB를 다루는 방법

TERM

ORM — SQL 없이 코드로 DB를 다루는 방법

게시일 2026-04-30수정일 2026-04-30
공식 링크
On this page

데이터베이스에 INSERT INTO users VALUES ... 대신 user.save() 한 줄로 저장하는 것 — ORM이 바꾼 개발 방식이다. AI 앱 개발에서 대화 기록, 임베딩 결과, 에이전트 상태를 저장하는 데이터 계층으로 자리잡은 이 기술의 원리와 주의점을 살펴본다.

정의

ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어의 클래스와 관계형 데이터베이스의 테이블을 자동으로 연결해주는 기술이다. sql 대신 코드의 언어로 데이터베이스를 조작할 수 있게 해준다.

원어: Object-Relational Mapping 한글: 객체 관계 매핑 대표 라이브러리: Prisma(TypeScript/JS), SQLAlchemy(Python), Sequelize(JS), TypeORM(TS), Django ORM(Python), ActiveRecord(Ruby)

ORM의 핵심 원리

ORM은 데이터베이스 테이블을 코드의 클래스(모델)에 대응시킨다. Prisma를 예로 들면 스키마 파일에 모델을 정의하면 SQL 테이블 생성과 TypeScript 타입이 자동으로 만들어진다.

// prisma/schema.prisma
model User {
  id        Int      @id @default(autoincrement())
  email     String   @unique
  name      String?
  posts     Post[]
  createdAt DateTime @default(now())
}

쿼리 작성 방식도 달라진다.

// SQL 직접 작성
const result = await db.query(
  'SELECT * FROM users WHERE email = $1',
  ['user@example.com']
);

// Prisma ORM
const user = await prisma.user.findUnique({
  where: { email: 'user@example.com' }
});

핵심 동작: ORM은 메서드 호출을 SQL로 변환한다. 개발자는 SQL 문법을 몰라도 데이터베이스를 다룰 수 있고, 데이터베이스 종류(PostgreSQL, MySQL, SQLite)가 바뀌어도 코드 변경이 최소화된다.

AD

장단점과 주의점

장점:

  • 생산성: SQL 작성 없이 데이터베이스 조작. 반복되는 CRUD 코드 감소
  • 타입 안전성: Prisma 같은 현대 ORM은 쿼리 결과의 TypeScript 타입을 자동 생성
  • 데이터베이스 추상화: PostgreSQL → SQLite 전환 시 코드 변경 최소화
  • 관계 처리: 조인(JOIN) 쿼리를 include: { posts: true } 같은 직관적 문법으로 표현

단점 및 주의점:

  • N+1 문제: 관계 데이터를 루프 안에서 조회하면 쿼리가 N+1번 발생해 성능이 저하된다. include: { posts: true } 같은 eager loading으로 해결한다
  • 복잡한 쿼리 한계: 서브쿼리·윈도우 함수 등 고급 SQL은 ORM 문법이 번거롭거나 지원하지 않는다. Raw SQL을 병행한다
  • 마이그레이션 학습: ORM 고유의 스키마 마이그레이션 워크플로를 별도로 익혀야 한다
AD

AI 앱 개발에서 ORM 활용

AI 앱은 사용자 대화 기록, llm 호출 결과, 에이전트 상태 등을 지속적으로 저장한다. supabase·neon 같은 서버리스 PostgreSQL 서비스와 Prisma를 조합하면 타입 안전한 데이터 레이어를 빠르게 구성할 수 있다.

// AI 대화 기록 저장 예시 (Prisma + Supabase)
await prisma.conversation.create({
  data: {
    userId: session.userId,
    messages: JSON.stringify(messages),
    model: 'claude-sonnet-4-6',
    tokenCount: usage.totalTokens,
    createdAt: new Date()
  }
});

벡터 검색(rag 패턴)이 필요한 경우 Prisma와 pgvector 확장을 함께 사용하는 패턴이 일반적이다.

관련 용어

  • sql — ORM이 내부적으로 변환해서 실행하는 쿼리 언어
  • database — ORM이 연결하는 관계형 데이터 저장소
  • api — ORM으로 구성된 데이터 레이어를 외부에 노출하는 인터페이스
  • supabase — PostgreSQL 기반 서버리스 DB. Prisma ORM과 자주 조합
  • rag — ORM으로 저장한 데이터를 검색해 LLM에 주입하는 패턴
AD