본문 바로가기
Backend

Prisma 시작하기

by 태균맨 2025. 6. 25.

Prisma는 Node.js, TypeScript ORM입니다. 직관적인 데이터 모델, 자동 마이그레이션, 타입 안정성과 자동 완성 기능 등등...

개인적으로 스키마 구조 데이터 타입 등 model로 타입을 정해버리니 AI 부려먹기 좋습니다.

 

Prisma 공식문서

https://www.prisma.io/

 

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: 데이터베이스 연결 정보 등 민감한 환경 변수를 관리하는 파일입니다.

prisma/schema.prisma

 

.env

 

여기서 .env에 저희 DB 정보로 바꿔주시면 됩니다.

저는 mysql 사용할 거니

DATABASE_URL="DB종류://유저명:비밀번호@호스트:포트/DB이름"

이런 식입니다.

mysql://유저명:비밀번호@호스트:포트/DB이름?allowPublicKeyRetrieval=true

 

그리고 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가 잘 붙었고, db pull에 성공한 모습
prisma/schema.prisma 에 자동으로 작성됨

 

 

 

 

이제 반대로 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

푸쉬를 하면

실제 DB에 생성됩니다.

 

 

 

 

 

 

추가로 스튜디오 기능

$ npx prisma studio

 

 

끝.