빠른 시작 • 웹사이트 • 문서 • 예제 • 블로그 • Discord • 트위터
Prisma ORM은 다음 도구로 구성된 차세대 ORM 입니다.
Prisma 클라이언트 : Node.js 및 TypeScript용 자동 생성 및 유형 안전 쿼리 빌더
Prisma Migrate : 선언적 데이터 모델링 및 마이그레이션 시스템
Prisma Studio : 데이터베이스의 데이터를 보고 편집할 수 있는 GUI
Prisma Client는 모든 Node.js 또는 TypeScript 백엔드 애플리케이션(서버리스 애플리케이션 및 마이크로서비스 포함)에서 사용할 수 있습니다. 이는 REST API, GraphQL API, gRPC API 또는 데이터베이스가 필요한 기타 모든 것일 수 있습니다.
Prisma ORM과 함께 사용할 데이터베이스가 필요한 경우 Prisma Postgres를 확인하세요.
Prisma ORM은 다음 Prisma 제품을 통해 더욱 확장될 수 있습니다.
Prisma Accelerate: 확장 가능한 연결 풀링을 갖춘 글로벌 데이터베이스 캐시
Prisma Pulse: 유형이 안전한 구독이 포함된 실시간 데이터베이스 이벤트
Prisma Optimize: AI 기반 쿼리 최적화 및 성능 통찰력
Prisma Studio: 데이터베이스의 데이터를 위한 시각적 편집기
Prisma를 시작하는 가장 빠른 방법은 빠른 시작 가이드를 따르는 것입니다. 두 데이터베이스 중 하나를 선택할 수 있습니다.
프리즈마 포스트그레스
SQLite
이미 자체 데이터베이스가 있는 경우 다음 가이드를 따를 수 있습니다.
기존 프로젝트에 Prisma 추가
Prisma를 사용하여 처음부터 새 프로젝트 설정
이 섹션에서는 Prisma ORM의 작동 방식과 가장 중요한 기술 구성 요소에 대한 높은 수준의 개요를 제공합니다. 더 자세한 소개를 보려면 Prisma 문서를 방문하세요.
Prisma 툴킷의 도구를 사용하는 모든 프로젝트는 Prisma 스키마 파일로 시작됩니다. Prisma 스키마를 사용하면 개발자는 직관적인 데이터 모델링 언어로 애플리케이션 모델을 정의할 수 있습니다. 또한 데이터베이스에 대한 연결을 포함하고 생성기를 정의합니다.
// 데이터 소스datasource db { 공급자 = "postgresql" url = env("DATABASE_URL")}// Generatorgenerator 클라이언트 { 공급자 = "prisma-client-js"}// 데이터 모델 모델 Post { id Int @id @default(autoincrement( )) 제목 문자열 내용 문자열? 게시됨 부울 @default(false) 작성자 사용자? @relation(fields: [authorId], reference: [id])authorId Int?}model User { id Int @id @default(autoincrement()) email String @unique name String? 게시물 게시물[]}
이 스키마에서는 다음 세 가지를 구성합니다.
데이터 소스 : 데이터베이스 연결을 지정합니다(환경 변수를 통해).
Generator : Prisma Client를 생성하고자 함을 나타냅니다.
데이터 모델 : 애플리케이션 모델을 정의합니다.
이 페이지에서는 데이터 모델에 중점을 둡니다. 해당 문서 페이지에서 데이터 소스 및 생성기에 대해 자세히 알아볼 수 있습니다.
데이터 모델은 모델의 모음입니다. 모델에는 두 가지 주요 기능이 있습니다.
기본 데이터베이스의 테이블을 나타냅니다.
Prisma Client API에서 쿼리에 대한 기반 제공
데이터 모델을 Prisma 스키마로 "가져오는" 두 가지 주요 작업 흐름이 있습니다.
데이터베이스를 검사하여 데이터 모델 생성
Prisma Migrate를 사용하여 데이터 모델을 수동으로 작성하고 데이터베이스에 매핑
데이터 모델이 정의되면 정의된 모델에 대한 CRUD 및 추가 쿼리를 노출하는 Prisma 클라이언트를 생성할 수 있습니다. TypeScript를 사용하는 경우 모든 쿼리에 대해 완전한 유형 안전성을 얻을 수 있습니다(모델 필드의 하위 집합만 검색하는 경우에도 마찬가지).
Prisma Client를 사용하는 첫 번째 단계는 npm 패키지를 설치하는 것입니다.
npm install @prisma/client
이 패키지를 설치하면 Prisma 스키마를 읽고 Prisma 클라이언트 코드를 생성하는 prisma generate
명령이 호출됩니다. 코드는 node_modules/@prisma/client/index.d.ts
에 의해 내보내지는 node_modules/.prisma/client
에 위치합니다.
데이터 모델을 변경한 후에는 node_modules/.prisma/client
내부의 코드가 업데이트되도록 Prisma 클라이언트를 수동으로 다시 생성해야 합니다.
npx prisma generate
"Prisma 클라이언트 생성"에 대한 자세한 내용은 설명서를 참조하세요.
Prisma 클라이언트가 생성되면 이를 코드로 가져와 데이터베이스에 쿼리를 보낼 수 있습니다. 이것이 설정 코드의 모습입니다.
다음과 같이 Prisma Client를 가져오고 인스턴스화할 수 있습니다.
import { PrismaClient } from '@prisma/client'const prisma = new PrismaClient()
또는
const { PrismaClient } = require('@prisma/client')const prisma = 새로운 PrismaClient()
이제 생성된 Prisma 클라이언트 API를 통해 쿼리 전송을 시작할 수 있습니다. 다음은 몇 가지 샘플 쿼리입니다. 모든 Prisma 클라이언트 쿼리는 기존의 일반 JavaScript 객체를 반환합니다.
Prisma 클라이언트 문서에서 사용 가능한 작업에 대해 자세히 알아보거나 이 데모 비디오(2분)를 시청하세요.
User
레코드를 검색합니다.// `async` 함수 내에서 실행const allUsers = prisma.user.findMany()를 기다립니다.
User
개체에 posts
관계를 포함합니다.// `async` 함수 내에서 실행const allUsers = wait prisma.user.findMany({ include: { post: true },})
"prisma"
포함된 모든 Post
레코드 필터링// `async` 함수 내에서 실행constfilteredPosts = wait prisma.post.findMany({ where: { OR: [{ title: { contain: 'prisma' } }, { content: { contain: 'prisma' } }], } ,})
User
와 새 Post
레코드를 만듭니다.// `async` 함수 내에서 실행const user = wait prisma.user.create({ data: { name: 'Alice', email: '[email protected]', post: { create: { title: 'Join us for Prisma 2021년 1월' }, }, },})
Post
레코드 업데이트// `async` 함수 내에서 실행const post = wait prisma.post.update({ where: { id: 42 }, data: {Published: true },})
TypeScript를 사용할 때 이 쿼리의 결과는 존재하지 않는 속성에 실수로 액세스할 수 없도록 정적으로 형식화 됩니다(컴파일 시 오타가 발견됩니다). 문서의 생성된 유형의 고급 사용 페이지에서 Prisma 클라이언트의 생성된 유형을 활용하는 방법에 대해 자세히 알아보세요.
Prisma는 열정적인 애플리케이션 개발자들로 구성된 대규모 지원 커뮤니티를 보유하고 있습니다. Discord와 여기 GitHub에서 우리와 함께하실 수 있습니다.
Prisma로 멋진 것을 만드셨나요? ? 읽어보기나 웹사이트에 딱 맞는 배지로 자랑해보세요.
[![Made with Prisma](http://made-with.prisma.io/dark.svg)](https://prisma.io)
[![Made with Prisma](http://made-with.prisma.io/indigo.svg)](https://prisma.io)
보고할 보안 문제가 있는 경우 [email protected]로 문의해 주세요.
GitHub의 prisma
저장소에서 Prisma 관련 주제에 대해 질문하고 토론을 시작할 수 있습니다.
? 질문하기
오류 메시지가 보이거나 문제가 발생하면 꼭 버그 리포트를 작성해주세요! 문서에서 버그 보고서 작성(예: 추가 디버깅 출력 포함)에 대한 모범 사례를 찾을 수 있습니다.
? 버그 신고서 작성
현재 Prisma에 특정 기능이 없다면 로드맵을 확인하여 미래에 해당 기능이 이미 계획되어 있는지 확인하세요.
로드맵의 기능이 GitHub 문제와 연결되어 있는 경우 ?를 남겨주세요. 문제에 대한 반응과 이상적으로는 기능에 대한 귀하의 생각을 댓글로 남겨주세요!
? 기능 요청 제출
기여 가이드라인과 기여자를 위한 행동 강령을 참조하세요.
Prisma 테스트 상태:
생태계 테스트 상태: