티스토리 뷰

반응형

 

✅ Prisma + PostgreSQL 통합 가이드 – 타입 안전한 데이터베이스 접근법

"SQL 직접 안 써도 된다? Prisma와 PostgreSQL 조합으로 완벽한 ORM 환경 구축."
PostgreSQL의 강력함에 Prisma의 간결함을 더한 최적의 데이터 처리 방식입니다.


🎯 Prisma와 PostgreSQL: 왜 이 조합이 좋은가?

💪 강력한 이유 3가지

  1. PostgreSQL의 풍부한 데이터 타입 지원
    • JSON, Array, Geospatial 등 다양한 타입을 Prisma가 완벽 지원
  2. 강력한 성능과 안정성
    • Rust 기반 Prisma 엔진과 PostgreSQL의 퍼포먼스 조합
  3. 타입 안전성과 자동완성
    • Prisma Client를 사용하여 SQL 직접 작성 없이 안정적 쿼리

📦 1. 프로젝트 세팅

💻 기본 설정

mkdir prisma-postgres && cd prisma-postgres
npm init -y
npm install @prisma/client
npm install prisma --save-dev
npm install pg

🗃 PostgreSQL 설치 및 DB 생성

sudo -u postgres psql
CREATE DATABASE mydb;
CREATE USER myuser WITH PASSWORD 'mypassword';
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

📐 2. Prisma 초기 설정

npx prisma init

.env 파일 설정:

DATABASE_URL="postgresql://myuser:mypassword@localhost:5432/mydb"

📑 3. Prisma Schema 작성

prisma/schema.prisma:

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

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

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

model Post {
  id        Int      @id @default(autoincrement())
  title     String
  content   String?
  published Boolean  @default(false)
  authorId  Int
  author    User     @relation(fields: [authorId], references: [id])
}

🚀 4. 마이그레이션 및 Client 생성

npx prisma migrate dev --name init

Client 생성:

npx prisma generate

🛠 5. Prisma Client 사용법

반응형

src/prisma.ts:

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()
export default prisma

📥 데이터 삽입 (Create)

const newUser = await prisma.user.create({
  data: {
    name: '훈창',
    email: 'hoon@example.com',
    age: 28,
  },
})
console.log('New User:', newUser)

📋 데이터 조회 (Read)

전체 조회

const users = await prisma.user.findMany()
console.log('Users:', users)

조건 조회

const activeUsers = await prisma.user.findMany({
  where: {
    isActive: true,
  },
})

📝 데이터 수정 (Update)

const updatedUser = await prisma.user.update({
  where: { id: 1 },
  data: { age: 29 },
})
console.log('Updated User:', updatedUser)

🗑 데이터 삭제 (Delete)

await prisma.user.delete({
  where: { id: 1 },
})

🌐 6. 고급 활용 – JSON 필드와 배열

Prisma는 PostgreSQL의 JSON 필드도 지원합니다:

model Profile {
  id        Int      @id @default(autoincrement())
  bio       String
  metadata  Json
}

데이터 추가:

const profile = await prisma.profile.create({
  data: {
    bio: 'Full-Stack Developer',
    metadata: { skills: ['Node.js', 'Prisma', 'PostgreSQL'] },
  },
})
console.log('Profile:', profile)

🧠 실무 팁: PostgreSQL에서 유용한 Prisma 기능

기능 코드

JSON 검색 where: { metadata: { path: ['skills'], equals: 'Node.js' } }
배열 필드 String[] 타입을 사용하여 태그 저장
복합 인덱스 @@unique([email, age])
트랜잭션 prisma.$transaction([op1, op2])

✅ 정리: Prisma와 PostgreSQL의 환상 조합

Prisma의 장점 PostgreSQL의 장점

타입 안정성 풍부한 데이터 타입 지원
Rust 기반 성능 고성능 데이터 처리
JSON 필드 활용 JSONB와 잘 호환
관계형 DB와 잘 맞음 ORM 최적화

 

Prisma PostgreSQL 연동,Prisma Client 사용법,PostgreSQL ORM,Node.js Prisma 시작하기,Prisma 관계형 데이터 모델링,Prisma JSON 필드,PostgreSQL JSONB 지원,타입 안전 ORM,Prisma CRUD 예제,Prisma로 데이터베이스 관리


 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함
반응형