framework/Prisma

✅ Prisma + SQL Server 통합 가이드 – 엔터프라이즈 DB와 타입 안전 ORM의 만남

octo54 2025. 5. 13. 11:59
반응형

 

✅ Prisma + SQL Server 통합 가이드 – 엔터프라이즈 DB와 타입 안전 ORM의 만남

"SQL Server의 강력함과 Prisma의 타입 안전성을 결합하여 효율적인 데이터 관리를 실현합니다."
대규모 데이터 처리와 관리에 특화된 SQL Server를 Prisma로 쉽게 다뤄보세요.


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

💪 강력한 이유 3가지

  1. SQL Server의 안정성
    • 대규모 엔터프라이즈 환경에서 신뢰할 수 있는 데이터 처리
  2. Prisma의 타입 안전성
    • ORM 기반으로 데이터 모델과 실제 DB를 일관성 있게 관리
  3. 강력한 관계형 데이터 지원
    • 1:1, 1:N, N:M 관계를 직관적으로 모델링

📦 1. 프로젝트 세팅

💻 기본 설정

mkdir prisma-sqlserver && cd prisma-sqlserver
npm init -y
npm install @prisma/client
npm install prisma --save-dev
npm install tedious

🗃 SQL Server 설정

SQL Server Management Studio(SSMS)에서 데이터베이스와 사용자 생성:

CREATE DATABASE MyDB;
CREATE LOGIN MyUser WITH PASSWORD = 'MyPassword';
USE MyDB;
CREATE USER MyUser FOR LOGIN MyUser;
ALTER ROLE db_owner ADD MEMBER MyUser;

📐 2. Prisma 초기 설정

npx prisma init

.env 파일 설정:

DATABASE_URL="sqlserver://localhost:1433;database=MyDB;user=MyUser;password=MyPassword;encrypt=true"

📑 3. Prisma Schema 작성

prisma/schema.prisma:

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

datasource db {
  provider = "sqlserver"
  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)
  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. SQL Server에서 Prisma로 관계형 데이터 처리

✅ 1:1 관계

model Profile {
  id     Int    @id @default(autoincrement())
  bio    String
  userId Int    @unique
  user   User   @relation(fields: [userId], references: [id])
}

✅ 1:N 관계

model User {
  id    Int     @id @default(autoincrement())
  name  String
  posts Post[]
}

model Post {
  id     Int    @id @default(autoincrement())
  title  String
  userId Int
  user   User   @relation(fields: [userId], references: [id])
}

✅ N:M 관계

model Post {
  id       Int      @id @default(autoincrement())
  title    String
  tags     Tag[]    @relation("PostTags")
}

model Tag {
  id       Int      @id @default(autoincrement())
  name     String
  posts    Post[]   @relation("PostTags")
}

🌟 SQL Server 고유 기능 활용

📂 UNIQUEIDENTIFIER 타입 사용

model Product {
  id     String @id @default(uuid()) @db.UniqueIdentifier
  name   String
  price  Float
}

💡 중첩 문서(JSON) 저장

SQL Server에서는 JSON 타입을 직접 지원하지 않지만,
Prisma에서는 String 필드에 JSON 데이터를 저장할 수 있습니다.

model Log {
  id      Int    @id @default(autoincrement())
  message String
  details String
}

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

기능 코드

트랜잭션 처리 prisma.$transaction([op1, op2])
고유 식별자 @default(uuid())
관계형 데이터 조회 include: { posts: true }
복합 인덱스 @@unique([email, age])

✅ Prisma와 SQL Server의 강력한 조합

Prisma의 장점 SQL Server의 장점

타입 안전성 대규모 엔터프라이즈 데이터 처리
Rust 기반 성능 고성능 데이터 처리 엔진
관계형 모델링 최적화 트랜잭션 및 복합 쿼리 지원
대규모 데이터 처리 고가용성, 확장성 지원

 

Prisma SQL Server 연동,SQL Server ORM,Node.js Prisma 시작하기,Prisma Client 사용법,Prisma로 SQL Server 관리,SQL Server Prisma CRUD,타입 안전 SQL Server,Prisma 데이터 모델링,SQL Server 관계형 모델링,Prisma로 대규모 데이터 처리