Node.js – 프리즈마(ORM)

미래의 나에게

// 설치
yarn add prisma

// 프리즈마 사용 시 필요한 파일 생성, prisma/schema
yarn init

// schema.prisma 기반의 Prisma client 등의 자원 생성
yarn prisma generate

// schema.prisma 기반으로 DB 업데이트
yarn prisma migrate dev

// 실제 DB 반영 없이 migration 파일 변경
yarn prisma migrate dev --create -only

첫째, ORM은 SQL 쿼리를 작성하지 않고도 데이터베이스와 상호 작용할 수 있도록 도와주는 도구입니다.

2023.01.29 – (코딩/node.js) – ORM / Sequelize & typeORM

이전에는 항상 TypeORM을 사용했지만 오늘은 Prisma가 떠오르는 초신성이라 Prisma에 대해 포스팅합니다.

TypeORM과 Prisma의 비교는 다음과 같습니다.

유형ORM 프리즈마
풍부한 기능, 풍부한 리소스, 많은 커뮤니티 새로운 프레임워크이기 때문에 상대적으로 제한된 기능,
상대적으로 적은 데이터
스키마 관리 도구 없음,
스키마 수동 생성 필요
스키마 관리 도구가 있습니다.


마이그레이션을 통해 스키마 변경 사항을 기록할 수 있습니다.

다양한 DB 연동 가능 PostgreSQL, MySQL, SQLite
상대적으로 성능이 좋지 않음 내부적으로 쿼리를 최적화하여 쿼리 성능 향상

Prisma가 설치되면 prisma라는 이름의 다음 폴더가 자동으로 생성됩니다.

이때 해당 폴더에 migrations/schema.prisma라는 파일이 있습니다.

마이그레이션 DB 스키마 변경이 있는 경우 시간 및 이름 기록남기는 특성이 있습니다.

계획. 프리즘 는 스키마 관리 도구이며 그 구조는 다음과 같습니다.

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql" // 사용하는 DB
  url      = env("DATABASE_URL") // database URL
}

model User {
  id String @id @default(uuid())
  name String @db.VarChar(200)
  phoneNumber String @db.Char(11)
  email String @db.VarChar(100)
  age Int
  posts Post()
}

model Post {
  id String @id @default(uuid())
  title String @db.VarChar(200)
  content String @db.LongText
  userId String // foreign key
  user User @relation(fields: (userId),references: (id)) // N대1 구조로 연결
}

schema.prisma는 프로젝트의 모든 스키마를 한눈에 파악할 수 있는 장점이 있으며,

간단하게 다른 테이블과 관계를 맺을 수 있기 때문에 매력적인 도구라고 생각합니다.


Node.js - 프리즈마(ORM) 1