Prisma 란?
Prisma는 자바스크립트와 타입스크립트에서 주목받고 있는 차세대 ORM 도구이다.
Prisma의 공식 홈페이지에선 자신을 이렇게 소개한다.
Next-generation Node.js and TypeScript ORM
Prisma는 Node.js, TypeScript, Rust, Go 등 다양한 언어와 프레임워크에서 사용할 수 있는 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로 불러올 수 있다.
개인 기록용입니다. 만약 잘못된 부분이 있다면 댓글로 알려주신다면 감사하겠습니다!