티스토리 뷰

반응형

 

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

"MySQL에 Prisma를 도입하면? SQL을 직접 작성하지 않아도 안전하고 빠르게 데이터베이스를 관리할 수 있습니다."
타입 안전성, 자동화된 마이그레이션, 직관적인 데이터 처리까지 한 번에 잡을 수 있습니다.


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

💪 강력한 이유 3가지

  1. MySQL의 광범위한 활용성
    • 웹 애플리케이션, ERP, CMS 등 다양한 프로젝트에서 사용
  2. Prisma의 타입 안전성과 자동완성
    • Prisma Client를 통해 데이터 구조를 바로 확인하며 쿼리 작성 가능
  3. 빠른 개발 속도
    • Prisma의 선언적 데이터 모델링과 MySQL의 효율성을 결합

📦 1. 프로젝트 세팅

💻 기본 설정

mkdir prisma-mysql && cd prisma-mysql
npm init -y
npm install @prisma/client
npm install prisma --save-dev
npm install mysql2

🗃 MySQL 설정

mysql -u root -p
CREATE DATABASE mydb;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;

📐 2. Prisma 초기 설정

npx prisma init

.env 파일 설정:

DATABASE_URL="mysql://myuser:mypassword@localhost:3306/mydb"

📑 3. Prisma Schema 작성

반응형

prisma/schema.prisma:

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

datasource db {
  provider = "mysql"
  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?
  userId   Int
  user     User     @relation(fields: [userId], 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: 30,
  },
})
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,
  },
})
console.log('Active Users:', activeUsers)

📝 데이터 수정 (Update)

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

🗑 데이터 삭제 (Delete)

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

🌐 6. 고급 활용 – 필드 타입과 속성

필드 타입 예시 설명

String name String 문자열
Int age Int 정수
Boolean isActive Boolean 참/거짓
DateTime createdAt DateTime 날짜와 시간
@default() @default(now()) 기본값 설정
@unique email String @unique 유니크 제약 조건

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

기능 코드

필드 추가 prisma.user.update({ data: { nickname: '호창' } })
조건 검색 where: { age: { gt: 20 } }
다중 삽입 prisma.user.createMany({ data: [...] })
관계형 데이터 조회 include: { posts: true }

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

Prisma의 장점 MySQL의 장점

타입 안전성 안정적 데이터 처리
자동완성 다양한 데이터 타입 지원
Rust 기반 성능 속도와 확장성 우수
관계형 모델링 최적화 SQL 쿼리 성능 탁월

 

Prisma MySQL 연동,Prisma Client 사용법,MySQL ORM,Node.js Prisma 시작하기,Prisma 관계형 데이터 모델링,Prisma 데이터 삽입,MySQL Prisma CRUD,타입 안전 ORM,Prisma 고급 기능,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
글 보관함
반응형