프리스마는 Node.JS 와 TypeScript에 최적화된 ORM으로서, 현재 Node.js v14.17.0 이상을 필요로 하며, 아래 요소로 구성되어 있습니다. 아래 셋업 과정을 통해서 의미를 확인 할 수 있습니다.
1.프로젝트 폴더 생성하고 이동합니다.
mkdir hello-prisma
cd hello-prisma
2. 타입스크립트 프로젝트를 초기화하고, 타입스크립트와 node 관련 팩키지 두가지를 설치합니다.
npm init -y
npm install typescript ts-node @types/node --save-dev
3. 타입스크립트도 초기화 합니다. ( tsconfig.json 파일 생성 )
npx tsc --init
4. 개발모드로 Prisma CLI 를 설치합니다.
npm install prisma --save-dev
5. Prisma CLI의 init 명령으로 Prisma 를 sqlite 와 연결 셋업합니다. (prisma 폴더, .env 파일, deb.db 파일 생성됨)
npx prisma init --datasource-provider sqlite
6. prisma/schema.prisma 파일에 모델을 만듭니다.
// 위 5 단계에서 자동 생성 됨
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
// 추가 입력은 아래 부분으로, User와 Post 두 개의 모델 입력
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
}
7. 아래 명령으로 데이터 베이스 테이블을 만들기 위해 마이그레이션합니다.
npx prisma migrate dev --name init
그러면 prisma/migrations 폴더가 생성되고, 최종적으로 새로운 migration.sql 이 생성됩니다. 이것에 근거하여 쿼리를보내려면, script.ts 파일이 필요 합니다.
8. script.ts 파일을 만들고, 아래 내용을 삽입한다.
// script.ts 파일
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function main() {
// ... 퀘리 작성부분
}
main()
.then(async () => {
await prisma.$disconnect()
})
.catch(async (e) => {
console.error(e)
await prisma.$disconnect()
process.exit(1)
})
9. 현재까지의 폴더 구조는 아래와 같습니다.

10, 아래 퀘리의 예제들을 script.ts 파일의 // ... 퀘리 작성부분 에 넣고, 터미널에서 npx ts-node script.ts 하면 결과를 볼 수있습니다. ( 쿼리 별로 하나씩 입력 )
// 데이터 입력
const user = await prisma.user.create({
data: {
name: 'Alice',
email: 'alice@prisma.io',
},
})
console.log(user)
// 입력된 모든 데이터 불러오기
const users = await prisma.user.findMany()
console.log(users)
// 연결된 User 와 Post 데이터 입력
const user = await prisma.user.create({
data: {
name: 'Bob',
email: 'bob@prisma.io',
posts: {
create: {
title: 'Hello World',
},
},
},
})
console.log(user)
// 연결된 모든 데이터 불러오기
const usersWithPosts = await prisma.user.findMany({
include: {
posts: true,
},
})
console.dir(usersWithPosts, { depth: null })
11. Studio 프로그램을 활용하면, GUI 형태로 작업 할 수 있습니다. 아래 명령으로 완성 할 수 있습니다.
npx prisma studio