Home / AI / AI 용어사전 / ORM — SQL 없이 코드로 DB를 다루는 방법
TERM
ORM — SQL 없이 코드로 DB를 다루는 방법
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)가 바뀌어도 코드 변경이 최소화된다.
장단점과 주의점
장점:
- 생산성: 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 고유의 스키마 마이그레이션 워크플로를 별도로 익혀야 한다
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에 주입하는 패턴