Prisma 란?

Prisma는 자바스크립트와 타입스크립트에서 주목받고 있는 차세대 ORM 도구이다.

Prisma의 공식 홈페이지에선 자신을 이렇게 소개한다.

Next-generation Node.js and TypeScript ORM

 

Prisma는 Node.jsTypeScriptRustGo 등 다양한 언어와 프레임워크에서 사용할 수 있는 ORM (Object-Relational Mapping) 도구이다. 이는 개발자가 SQL 쿼리를 직접 작성하지 않고도 데이터베이스를 쉽게 다룰 수 있도록 도우며, 데이터베이스 초보자에게 더 쉽게 접근할 수 있게 도움을 주며, 능숙한 개발자들에게는 생산성을 높여준다.

 


 

Prisma의 작동

Prisma ORM를 사용하는 모든 프로젝트는 Prisma Schema 파일로 시작된다.  이 스키마 파일은 직관적인 데이터 모델링 언어로 애플리케이션 모델을 정의하고 데이터 소스에 대한 정보를 포함한다.

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

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

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  content   String?
  published Boolean @default(false)
  author    User?   @relation(fields: [authorId], references: [id])
  authorId  Int?
}

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

 

해당 스키마에서는 세 가지 요소를 정의했다.

  • 환경변수를 통한 DB 커넥션
  • Prisma Client 생성
  • 모델 정의

 

 


Prisma 의 구성

Prisma는 크게 세 가지 부분으로 구성된다.

  • Prisma Client 
  • Prisma Migrate
  • Prisma  Studio

 

Prisma Client 

Prisma Client는 데이터베이스와 상호작용하는 데 사용되는 쿼리빌더이다. 이를 통해 안전하게 데이터베이스에 액세스를 가능하게 하며, 반복적인 코드를 줄여준다. Prisma Client를 사용하면 Sequelize, TypeORM과 같은 전통적인 ORM 또는 knex.js 와 같은 SQL 쿼리 빌더 대신 활용할 수 있다. Prisma Client는 Prisma의 일부이다.

  • Prisma 스키마와 모델을 기반으로 자동 생성된다.
  • 데이터베이스 테이블과 필드를 자동으로 매핑하여 쿼리를 생성한다
  • Prisma CLI를 통해 생성 및 업데이트할 수 있다.

 

 

Prisma Migrate

Prisma Migrate는 Prisma CLI를 통해 사용할 수 있는 데이터베이스 마이그레이션 도구이다. 이 도구는 Prisma Schema와 통합되어 데이터 모델링을 지원한다. 즉 데이터베이스에 새로운 테이블을 생성하거나, 기존 테이블에 열을 추가하는등의 작업을 하는 변경도구이다.

  • 데이터베이스 스키마를 Prisma Schema와 동기화한다.
  • 데이터베이스에 이미 존재하는 데이터를 보존한다.

아래의 명령어를 통해 DB에 반영하고 Prisma CLient를 업데이트할 수 있다.

npx prisma migrate save --experimental
npx prisma migrate up --experimental
npx prisma generate

 

 

 

Prisma  Studio

Prisma Studio 는 GUI다. 이 도구를 통해 스키마 탐색, 데이터 조회 및 수정 등의 작업을 할 수 있다.

 


 

그 외 Prisma Introspect도 있다. 이는 데이터베이스의 URL을 설정하고 

npx prisma introspect

해당 명령어를 통해 기존 데이터베이스의 구조를 Prisma Schema로 불러올 수 있다.

 

 

 

 

개인 기록용입니다. 만약 잘못된 부분이 있다면 댓글로 알려주신다면 감사하겠습니다!