Home Prisma 사용 방법
Post
X

Prisma 사용 방법

Prisma

TypeScript와 JavaScript 환경에서 데이터베이스와 상호작용을 쉽게 할 수 있게 도와주는 ORM(Object Relational Mapping)입니다.

ORM (Object Relational Mapping)
객체 지향 프로그래밍 언어에서 사용되는 객체를 관계형 데이터베이스의 테이블과 매핑하여, 객체와 데이터베이스 간의 데이터를 자동으로 변환하는 기술입니다.
  • 설치

    1
    2
    
    npm install @prisma/client
    npx prisma init
    

구성 요소

  • Prisma Client

    자동으로 생성된 TypeScript/JavaScript 코드로, 데이터베이스와 상호작용할 수 있는 인터페이스를 제공합니다.

    쿼리를 작성할 때 타입 안전성을 제공하며, 코드 자동 완성, 오류 처리 등을 통해 데이터를 다루는 과정에서 개발자의 실수를 줄여줍니다.

  • Prisma Migrate

    데이터베이스 스키마 변경을 추적하고, 이를 반영하기 위한 마이그레이션 파일을 자동으로 생성해줍니다.

    개발자가 데이터베이스의 구조를 수정할 때, 변경을 쉽게 관리하고, 배포 환경에서도 안정적인 스키마 관리를 도와줍니다.

  • Prisma Studio

    Prisma에서 제공하는 GUI(그래픽 사용자 인터페이스)로, 데이터베이스의 데이터를 시각적으로 관리하고 조작할 수 있게 해줍니다.

    이를 통해 SQL 쿼리를 직접 작성하지 않고도 데이터베이스의 데이터를 쉽게 편집할 수 있으며, 개발과 디버깅 작업이 훨씬 직관적으로 이루어집니다.


사용 방법

npx prisma init 실행 시 prisma 폴더가 생성되고, 그 안에 schema.prisma 파일이 생성됩니다.

schema.prisma 파일에서 DB 연결 정보를 설정하고 모델을 정의합니다.

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL") // "postgresql://user:password@localhost:5432/mydb"
}

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

model User {
  id    Int    @id @default(autoincrement())
  name  String
  email String @unique
}

데이터 모델을 정의한 후, Prisma Migrate를 사용하여 마이그레이션 파일을 생성합니다.

1
npx prisma migrate dev --name init

명령을 실행하면 prisma/migrations 폴더에 마이그레이션 파일이 생성됩니다.

또한, Prisma는 DB에 실제로 마이그레이션을 적용하고, Prisma Client를 업데이트합니다.


기존의 DB에 스키미가 정의되어 있는 경우 명령어를 사용해 schema.prisma 파일로 변환할 수 있습니다.

  • npx prisma introspect

    데이터베이스 스키마를 읽어서 현재 상태를 기준으로 schema.prisma 파일을 갱신합니다.

    이 때, schema.prisma 파일의 내용을 완전히 덮어씁니다.

    사용 용도 : 초기 설정 또는 데이터베이스와 동기화

  • npx prisma db pull

    명령어도 DB의 구조를 읽어오지만, 기존 파일의 내용을 유지하려고 시도합니다.

    커스텀으로 추가한 주석, 포맷, 이름 변경 등의 수정이 덮어쓰이지 않습니다.

    사용 용도 : 점진적으로 변경 사항 반영


쿼리 메서드

Prisma는 DB와 상호작용하기 위한 다양한 쿼리 메서드를 제공하여, CRUD 작업은 물론 집계, 조건 필터링, 다중 레코드 작업 등 다양한 작업을 손쉽게 처리할 수 있습니다.

  • 기본 CRUD : create, findUnique, findFirst, findMany, update, updateMany, delete, deleteMany

  • 집계 및 쿼리 : count, aggregate, groupBy

  • 조건 및 필터링 : where, select, include, orderBy, skip, take


사용 방법

Prisma Client의 인스턴스를 통해 데이터베이스에 대한 다양한 CRUD 작업을 처리할 수 있는 쿼리 메서드 사용할 수 있습니다.

Prisma Client의 인스턴스.모델명.쿼리 멤서드 형태로 사용

1
2
3
4
5
6
7
8
9
10
11
import { PrismaClient } from "@prisma/client";

const prisma = new PrismaClient(); // Prisma Client의 인스턴스

// User 모델에 데이어 생성
const user = await prisma.user.create({
  data: {
    name: "Alice",
    email: "alice@example.com",
  },
});
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.