개발하는 너구리

prisma 본문

TIL

prisma

너구리개발자 2024. 7. 2. 02:50

 

 

 

Prisma는 TypeScript와 JavaScript 환경에서 사용되는 최신 ORM(Object-Relational Mapping) 도구입니다. 데이터베이스와 애플리케이션 간의 상호작용을 단순화하고 타입 안전성을 제공하며, 개발자가 데이터베이스 작업을 보다 쉽게 수행할 수 있도록 도와줍니다.

주요 기능 및 특징

  1. 자동 생성된 타입:
    • Prisma는 데이터베이스 스키마를 기반으로 TypeScript 타입을 자동으로 생성하여, 데이터베이스 작업에서 타입 안전성을 보장합니다.
  2. 데이터베이스 마이그레이션:
    • Prisma는 마이그레이션 시스템을 제공하여, 데이터베이스 스키마의 변경 사항을 관리하고 적용할 수 있습니다.
  3. 프로그래밍 인터페이스:
    • Prisma Client를 통해 데이터베이스 쿼리를 TypeScript 또는 JavaScript 코드로 작성할 수 있습니다.
    • Prisma Client는 자동으로 생성된 타입을 활용하여, 개발자가 쿼리를 작성할 때 코드 컴플리션 및 타입 검사를 받을 수 있습니다.
  4. 다양한 데이터베이스 지원:
    • Prisma는 여러 데이터베이스를 지원합니다. (예: PostgreSQL, MySQL, SQLite, SQL Server 등)

주요 구성 요소

Prisma Schema:

  • .prisma 파일에 정의되며, 데이터베이스 모델, 데이터베이스 연결 정보, 생성할 Prisma Client를 설정합니다.
  • 예시:
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

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

model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
}

 

 

Prisma Client:

  • Prisma Schema로부터 생성된 타입 안전한 데이터베이스 클라이언트입니다.
  • 예시:
import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

async function main() {
  const user = await prisma.user.create({
    data: {
      email: 'user@example.com',
      name: 'John Doe',
    },
  });
  console.log(user);
}

main()
  .catch(e => console.error(e))
  .finally(async () => {
    await prisma.$disconnect();
  });

 

 

Prisma Migrate:
  • 데이터베이스 스키마를 버전 관리하고, 변경 사항을 적용하는 도구입니다.
  • 주요 명령어:
    • prisma migrate dev: 로컬 개발 환경에서 마이그레이션을 적용합니다.
    • prisma migrate deploy: 프로덕션 환경에서 마이그레이션을 적용합니다.
    • prisma migrate reset: 데이터베이스를 리셋하고 마이그레이션을 다시 적용합니다.

 

 

 

 

요약

Prisma는 현대적인 ORM 도구로, 데이터베이스와의 상호작용을 간단하게 하고, 타입 안전성을 제공하며, 데이터베이스 마이그레이션 시스템을 통해 개발자가 더 효율적으로 작업할 수 있도록 도와줍니다. Prisma를 사용하면 데이터베이스 작업이 더욱 직관적이고, 안전하며, 유지보수가 쉬워집니다.

'TIL' 카테고리의 다른 글

sever action  (0) 2024.07.04
bcrypt, iron-session  (0) 2024.07.02
zod  (0) 2024.06.28
@tailwind  (0) 2024.06.27
tailwind css modifier  (0) 2024.06.26