Prisma Client

Odyssey·2025년 3월 20일
0

Next.js_study

목록 보기
36/58
post-thumbnail

2025.3.21 금요일의 공부기록

Prisma 마이그레이션(migrate) 이란?

Prisma 마이그레이션(migrate)은 데이터베이스의 구조를 변경할 때 사용하는 도구로, 데이터 모델(schema)의 변경사항을 데이터베이스에 안전하고 일관된 방식으로 적용해준다. 데이터베이스 테이블이나 컬럼이 추가되거나 삭제될 때마다 마이그레이션을 실행하면 데이터베이스와 애플리케이션 코드가 항상 일치된 상태로 유지된다.

개발 환경에서 마이그레이션 수행 (migrate dev)

개발 단계에서는 아래 명령어를 사용하여 빠르고 안전하게 데이터베이스 구조를 변경할 수 있다.

npx prisma migrate dev

이 명령어를 실행하면 아래 과정이 순차적으로 수행된다.

  1. 변경사항 확인
    Prisma는 데이터베이스와 현재의 Prisma 스키마(schema.prisma)를 비교하여 달라진 점을 파악한다.

  2. 변경사항 테스트 적용
    발견된 변경 사항을 바로 실제 데이터베이스에 적용하기 전에, 테스트 목적의 별도 임시 데이터베이스(shadow database)에 먼저 적용하여 이상이 없는지 미리 점검한다.

  3. 마이그레이션 파일 생성
    테스트 적용이 성공하면, Prisma는 변경된 내용을 SQL 파일로 만들어 prisma/migrations 폴더에 저장한다.

  4. 마이그레이션을 실제 데이터베이스에 적용
    생성된 마이그레이션 SQL 파일을 실제 데이터베이스에 적용하고 이를 기록하여 관리한다.

  5. Prisma Client 코드 자동 생성
    마이그레이션 완료 후 자동으로 Prisma Client의 타입스크립트 코드가 새롭게 생성된다. 이를 통해 변경된 데이터베이스와 즉각적으로 타입 안정성을 유지한다.

마이그레이션 사용 시 주의사항

  • 위 명령어(migrate dev)는 반드시 개발 환경에서만 사용해야 한다.
  • 프로덕션 환경에서는 다음 명령어를 사용하여 마이그레이션을 안전하게 적용해야 한다.
npx prisma migrate deploy

더 자세한 내용은 아래 링크를 통해 확인할 수 있다.


Prisma Client란?

Prisma Client는 Prisma 스키마(schema)를 기반으로 자동 생성되는 타입 안전(type-safe) 쿼리 빌더이다. 이 라이브러리를 사용하면 SQL을 직접 작성하지 않고도 직관적이고 명확한 API를 통해 데이터베이스를 쉽게 다룰 수 있다.

Prisma Client는 자동 완성과 타입 안전성을 제공하여 개발자의 생산성을 크게 높여준다.

Prisma Client 설치 방법

먼저 Prisma Client를 설치해야 한다. 아래 명령어를 터미널에서 실행한다.

npm install @prisma/client

이후 npx prisma generate를 실행하면 모델 변경 시 Prisma Client가 자동 생성된다.

Prisma Client 기본 사용법

Prisma Client는 다음과 같이 간단히 설정하여 사용할 수 있다.

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

이제 Prisma Client를 통해 데이터를 쉽게 조작할 수 있다.

데이터 조회 예시

모든 사용자 데이터 조회 예시이다.

async function getUsers() {
  const users = await prisma.user.findMany()
  console.log(users)
}

getUsers()

특정 사용자 조회 예시

특정 조건에 맞는 사용자 데이터를 조회하는 예시이다.

async function findUser(username: string) {
  const user = await prisma.user.findUnique({
    where: { username }
  })
  console.log(user)
}

findUser('john')

데이터 추가 예시

새로운 사용자 데이터를 추가하는 예시이다.

async function createUser() {
  const newUser = await prisma.user.create({
    data: {
      username: 'jane',
      email: 'jane@example.com',
      password: 'hashed_password'
    }
  })
  console.log(newUser)
}

createUser()

데이터 수정 예시

기존 사용자 정보를 업데이트하는 예시이다.

async function updateUser(id: number) {
  const updatedUser = await prisma.user.update({
    where: { id },
    data: { email: 'newemail@example.com' }
  })
  console.log(updatedUser)
}

updateUser()

데이터 삭제 예시

사용자 데이터를 삭제하는 예시이다.

async function deleteUser(id: number) {
  await prisma.user.delete({
    where: { id }
  })
  console.log('삭제 완료')
}

deleteUser()

📌 Prisma Client 공식 문서 바로가기


개발 워크플로우 정리

  • Prisma 모델을 변경할 때마다 반드시 npx prisma migrate dev를 실행하여 데이터베이스와 모델을 동기화한다.
  • 프로덕션 환경에서는 반드시 npx prisma migrate deploy 명령어를 사용한다.
  • Prisma Client는 항상 최신 모델을 기준으로 타입을 자동 생성하기 때문에, 모델 변경 후 Client를 자동 생성(npx prisma generate)하면 타입 안정성을 유지할 수 있다.
  • 데이터베이스의 상태를 시각적으로 확인하고 싶다면 SQLite Viewer(VSCode 확장)를 적극 활용한다.

0개의 댓글