티스토리 뷰

반응형

✅ ORM(Prisma, TypeORM)의 장단점과 사용 이유를 설명하라

ORM(Object-Relational Mapping)은 객체지향 언어의 객체와 관계형 데이터베이스의 데이터를
자동으로 매핑해주는 기술로, SQL을 직접 작성하지 않아도 데이터베이스를 다룰 수 있게 해줍니다.

Node.js 생태계에서는 TypeORM, Prisma, Sequelize 등이 대표적인 ORM이며,
최근에는 Prisma가 타입 안정성과 개발 생산성 면에서 빠르게 대세로 자리 잡고 있습니다.


📌 1. ORM의 개념

ORM은 클래스나 객체를 SQL 테이블과 매핑시켜주는 기술입니다.
즉, 개발자는 DB를 객체처럼 다루고, ORM이 내부적으로 SQL을 생성 및 실행합니다.


📌 2. Prisma vs TypeORM 비교

항목 Prisma TypeORM

언어 TypeScript 전용 TS/JS 모두 가능
설정 방식 Schema-first (schema.prisma 파일 작성) Decorator 기반 (Entity 클래스에 정의)
쿼리 작성 Prisma Client 사용 (자동 생성) Repository/QueryBuilder
타입 안정성 ✅ 매우 강함 ⚠️ 상대적으로 약함
개발 속도 ✅ 빠름 (자동 완성 및 강력한 타입 지원) 느릴 수 있음
마이그레이션 ✅ 강력한 CLI 기반 일부 이슈 존재
러닝 커브 낮음 (명확한 문서) 중간 이상 (데코레이터 이해 필요)

📌 3. Prisma 사용 예시

반응형

schema.prisma

model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
}

Prisma Client

const newUser = await prisma.user.create({
  data: {
    email: 'test@example.com',
    name: '홍길동',
  },
});

자동완성과 타입 보장 덕분에 런타임 에러 최소화 가능


📌 4. ORM의 장점

장점 설명

✅ 생산성 향상 복잡한 SQL 없이 객체로 DB 조작 가능
✅ 유지보수 용이 코드 기반 구조 → 스키마 변경 추적 쉬움
✅ 타입 안정성 (Prisma 기준) 잘못된 쿼리 컴파일 타임에 감지
✅ 마이그레이션 자동화 CLI로 스키마 버전 관리 가능
✅ 보안성 향상 SQL Injection 방지에 유리 (파라미터 바인딩 기반)

📌 5. ORM의 단점 및 한계

단점 설명

❌ 성능 튜닝 어려움 복잡한 SQL 최적화 어려움 (Join/Index 활용 제한)
❌ 쿼리 제어 부족 ORM이 생성한 SQL이 비효율적일 수 있음
❌ 러닝 커브 ORM 자체 학습 필요 (특히 관계 설정, 마이그레이션)
❌ 추상화 오버헤드 작은 프로젝트에는 과도할 수 있음

📌 6. 실무 경험 예시

🧪 문제

  • 초기 프로젝트에서 TypeORM 사용 → N+1 문제 자주 발생
  • 디버깅 시 SQL 로그가 직관적이지 않음
  • DTO와 Entity 간 불필요한 중복 구조 발생

✅ 해결

  • Prisma로 전환
  • 코드량 30% 감소 + 타입 오류 70% 줄어듦
  • 개발 속도 및 협업 생산성 대폭 향상

📌 7. 언제 Prisma, TypeORM을 선택할까?

상황 추천 ORM

타입 안정성, 자동완성 중시 ✅ Prisma
기존 Entity/Decorator 경험 있음 ✅ TypeORM
고급 SQL 제어 필요 ✅ TypeORM 또는 직접 SQL
빠른 개발 + 테스트 중심 개발 ✅ Prisma

📌 8. 면접에서 이렇게 설명하세요

ORM은 객체와 관계형 DB 간의 매핑을 자동화하여 생산성을 높이고, 코드의 일관성을 유지할 수 있게 해줍니다.
Prisma는 타입 안정성과 자동완성 기능 덕분에 런타임 에러를 줄일 수 있었고,
실무에서는 Prisma 기반의 프로젝트에서 빠른 개발과 안정적인 배포 경험을 쌓았습니다.



ORM,Prisma,TypeORM,Node.js ORM,데이터베이스모델링,타입안정성,마이그레이션,SQL추상화,백엔드개발,면접질문


 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함
반응형