미래의 나에게
// 설치
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는 프로젝트의 모든 스키마를 한눈에 파악할 수 있는 장점이 있으며,
간단하게 다른 테이블과 관계를 맺을 수 있기 때문에 매력적인 도구라고 생각합니다.