본문 바로가기

개발 공부

Prisma DB 연결

Prisma

Prisma는 TypeScript 기반 ORM(Object Relational Mapping) 도구예요.
SQL을 직접 쓸 필요 없이 타입 안정성 있는 DB 코드를 쉽게 작성할 수 있습니다.

  • generate: Prisma Client 생성
  • db push: Prisma 스키마를 실제 DB에 반영 (테이블 자동 생성)
  • migrate: 버전 관리되는 마이그레이션 파일 생성

 


 

초기 설정

프로젝트 루트에서 Prisma 설치부터 시작합니다

npm install prisma --save-dev
npm install @prisma/client

 

 

Prisma 초기화

npx prisma init
  • 이 명령어를 실행하면 프로젝트 루트에 다음 폴더/파일이 생깁니다.
prisma/
 └── schema.prisma
.env

 

schema.prisma 기본 구조

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

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

 

 


데이터베이스 연결 (Neon, Supabase, PlanetScale 등)

만약 Neon(PostgreSQL)을 사용한다면
Neon에서 생성된 연결 URL을 .env에 추가하세요.

보통 처음 가이드에 URL 주소를 복사할 수 있습니다.

DATABASE_URL="postgresql://neondb_owner:password@ep-sample-pooler.ap-southeast-1.aws.neon.tech/neondb"

 

 


스키마 작성하기

prisma/schema.prisma 안에서 모델(테이블)을 정의합니다.

 

예시: User 테이블

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

 

 


Prisma Client 생성하기 (npx prisma generate)

이 명령어를 실행하면 node_modules/@prisma/client 경로에 Prisma 클라이언트가 생성됩니다.

npx prisma generate

 

출력 예시

✔ Generated Prisma Client (5.2.0 | library) to ./node_modules/@prisma/client in 70ms

 

이제 코드에서 바로 사용할 수 있습니다

import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

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

main();

 

 


DB에 실제 반영하기 (npx prisma db push)

이제 작성한 스키마를 실제 DB에 반영해보세요.

npx prisma db push

 

출력 예시

Prisma schema loaded from prisma/schema.prisma
Datasource "db": PostgreSQL database "neondb", schema "public" at "ep-sample-pooler.ap-southeast-1.aws.neon.tech:5432"

✔ Your database is now in sync with your schema. The Prisma Client has been generated and saved at node_modules/@prisma/client.
  • 이제 Neon 대시보드에서 테이블이 실제로 생성된 것을 확인할 수 있습니다.

 

 


generate / db push / migrate 차이 요약

 

명령어 역할 비고
npx prisma generate Prisma Client 생성 모델 수정 후 항상 실행
npx prisma db push 스키마 → DB 반영 개발용, 빠른 반영
npx prisma migrate dev 마이그레이션 파일 생성 + 반영 배포 환경에서 추천

 

 

Next.js에서 Prisma Singleton 설정 (옵션)

Next.js 13~15에서는 서버 실행마다 PrismaClient가 여러 번 생성되는 걸 방지해야 합니다.

// lib/prisma.ts
import { PrismaClient } from '@prisma/client';

const globalForPrisma = globalThis as unknown as { prisma: PrismaClient };

export const prisma =
  globalForPrisma.prisma ||
  new PrismaClient({
    log: ['query', 'info', 'warn', 'error'],
  });

if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;

 

이제 프로젝트 어느 개별 파일에서든 다음처럼 사용 가능합니다 

import { prisma } from '@/lib/prisma';

export async function getUsers() {
  return await prisma.user.findMany();
}

 

'개발 공부' 카테고리의 다른 글

shadcn/ui (1)  (0) 2025.11.16
Prisma CRUD 예시  (0) 2025.11.12
Prisma 관계(Relation)  (0) 2025.11.02
Prisma 스키마 (2) - 인덱스, 유니크, 복합키  (0) 2025.11.01
Prisma 스키마 (1)  (0) 2025.10.31