Prisma는 Node.js, TypeScript ORM입니다. 직관적인 데이터 모델, 자동 마이그레이션, 타입 안정성과 자동 완성 기능 등등...
개인적으로 스키마 구조 데이터 타입 등 model로 타입을 정해버리니 AI 부려먹기 좋습니다.
Prisma 공식문서
Prisma | Instant Postgres plus an ORM for simpler db workflows
Build, fortify, and grow your application easily with an intuitive data model, type-safety, automated migrations, connection pooling and caching.
www.prisma.io
사용 스택
next.js 14
mysql 8.0.41
# Prisma CLI 설치
$ npm install prisma
# Prisma 프로젝트 초기화
$ npx prisma init
npx prisma init 명령어 실행 시, 프로젝트 루트에 prisma 폴더와 .env 파일이 생성됩니다.
- prisma/schema.prisma: 데이터베이스 스키마를 정의하는 핵심 파일입니다.
- .env: 데이터베이스 연결 정보 등 민감한 환경 변수를 관리하는 파일입니다.
여기서 .env에 저희 DB 정보로 바꿔주시면 됩니다.
저는 mysql 사용할 거니
DATABASE_URL="DB종류://유저명:비밀번호@호스트:포트/DB이름"
이런 식입니다.
그리고 prisma/schema.prisma도 mysql로 수정해 줍시다.
이제 프로젝트에 prisma 클라이언트를 설치해 줍시다.
# @prisma/client 설치
$ npm install @prisma/client
prisma/schema.prisma 에 스키마를 작성하고 push를 해도 되고,
실제 DB를 작성하고 db pull을 해도 됩니다.
저는 DBeaver를 이용해 간단하게 DB를 작성한 후 db pull을 해보겠습니다.
$ npx prisma db pull
이제 반대로 db push를 해보겠습니다.
// prisma/schema.prisma
// 유저 모델
model users {
id String @id @default(uuid())
email String @unique // 로그인 ID로 사용
password String? // 이메일 가입 시 사용 (소셜 로그인은 null)
name String // 사용자 이름
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@map("users") // 실제 DB 테이블 이름
}
대충 이렇게 작성해주고
$ npx prisma db push
푸쉬를 하면
추가로 스튜디오 기능
$ npx prisma studio
끝.