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가지
- SQL Server의 안정성
- 대규모 엔터프라이즈 환경에서 신뢰할 수 있는 데이터 처리
- Prisma의 타입 안전성
- ORM 기반으로 데이터 모델과 실제 DB를 일관성 있게 관리
- 강력한 관계형 데이터 지원
- 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로 대규모 데이터 처리