Prisma 초기 세팅

Odyssey·2025년 3월 20일
0

Next.js_study

목록 보기
34/58
post-thumbnail

2025.3.20 목요일의 공부기록

Prisma는 TypeScript 및 Node.js에서 SQL 데이터베이스와 상호작용할 수 있는 ORM(Object-Relational Mapping) 라이브러리이다.
MySQL, PostgreSQL, SQLite, MongoDB 등을 지원하며 타입 안전한 쿼리 작성이 가능하다.

📌 Prisma 공식 문서 바로가기


1. Prisma 설치

패키지 설치 및 초기화

터미널에서 아래 명령어를 실행하여 Prisma를 설치하고 초기화한다.

npm install prisma --save-dev
npx prisma init

prisma 디렉터리와 schema.prisma 파일이 생성된다.


2. 데이터베이스 연결 설정

prisma/schema.prisma 파일 설정하기

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

datasource db {
  provider = "postgresql"  // postgresql, mysql, sqlite, mongodb 등 선택 가능
  url      = env("DATABASE_URL")
}

.env 파일에서 데이터베이스 연결 정보를 설정한다.

DATABASE_URL="postgresql://user:password@localhost:5432/mydb"

3. Prisma 모델 정의하기

prisma/schema.prisma 파일에 데이터 모델을 추가한다.

model User {
  id        String   @id @default(uuid())  // UUID 기본키 자동 생성
  name      String
  email     String   @unique               // 이메일 중복 금지
  password  String
  createdAt DateTime @default(now())       // 생성 날짜 자동 입력
}

4. Prisma 마이그레이션 실행하기

데이터 모델을 DB에 반영하기 위해 마이그레이션을 실행한다.

npx prisma migrate dev --name init

✅ 마이그레이션 후 prisma/migrations 폴더에 마이그레이션 파일이 생성된다.


5. Prisma Client 생성하기

Prisma Client를 생성해 데이터베이스와 상호작용한다.

npx prisma generate

6. Prisma Client 설정 및 사용법

lib/prisma.ts에 Prisma Client 설정하기

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

const prisma = new PrismaClient();

export default prisma;

사용자 데이터 추가 예시

import prisma from "@/lib/prisma";

async function createUser() {
  const user = await prisma.user.create({
    data: {
      name: "John Doe",
      email: "john@example.com",
      password: "hashed_password",
    },
  });
  console.log(user);
}

createUser();

모든 사용자 조회 예시

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

getUsers();

7. Prisma Studio로 데이터 관리하기 (GUI 도구)

Prisma Studio는 데이터베이스를 GUI로 쉽게 관리할 수 있게 도와준다.

npx prisma studio

✅ 브라우저가 열리며 GUI 기반 데이터 관리가 가능한다.


8. Next.js API와 Prisma 연동하기

Next.js API 라우트 예시

pages/api/users.ts

import type { NextApiRequest, NextApiResponse } from "next";
import prisma from "@/lib/prisma";

export default async function handler(req: NextApiRequest, res: NextApiResponse) {
  if (req.method === "GET") {
    const users = await prisma.user.findMany();
    res.status(200).json(users);
  }
}

Prisma 초기 세팅 총정리

단계명령어설명
Prisma 설치npm install prisma --save-devPrisma 설치
Prisma 초기화npx prisma init초기 설정
마이그레이션 실행npx prisma migrate dev --name initDB 반영
Prisma Client 생성npx prisma generate타입스크립트 클라이언트 생성
Prisma Studio 실행npx prisma studioGUI 도구

더 자세한 내용은 Prisma 공식 문서에서 확인하자

0개의 댓글