Don't be afraid of challenges

prisma가 무엇인가 본문

웹서비스

prisma가 무엇인가

초아롱 2024. 12. 26. 16:24

prisma란 ?

자바스크립트와 타입스크립트 커뮤니티에서 주목받고 있는 차세대 ORM(Object Relational Mapping) 프레임워크

데이터베이스와 상호작용하는 응용 애플리케이션을 개발할 때, 프로그래머가 직접 SQL을 작성하지 않아도 되므로, 개발 생산성을 높여준다.

효과적인 데이터 모델링을 위한 간단하지만 강력한 자체적인 스키마 문법을 제공하고 이 스키마를 통해 DB 마이그레이션과 클라이언트 코드 생성을 완전히 자동으로 생성해준다.

개발자입장에서는 데이터베이스에 접근하기 위해 작성해야하는 코드가 비약적으로 줄어들고 스키마 파일 하나만 관리하면 되기때문에 유지보수 용이하다.

 

prisma 설치

npm i -D prisma

 

prisma command

init set up Prisma for your app
generate Generate artifacts ( e.g Prisma client)
db Manage your database schema and lifecycle
migrate Migrate your database
studio Browse your data with Prisma Studio
validate Validate your Prisma schema
format Format your Prisma schema

 

  Set up a new Prisma project
  $ prisma init

  Generate artifacts (e.g. Prisma Client)
  $ prisma generate

  Browse your data
  $ prisma studio

  Create migrations from your Prisma schema, apply them to the database, generate artifacts (e.g. Prisma Client)
  $ prisma migrate dev

  Pull the schema from an existing database, updating the Prisma schema
  $ prisma db pull

  Push the Prisma schema state to the database
  $ prisma db push

  Validate your Prisma schema
  $ prisma validate

  Format your Prisma schema
  $ prisma format

 

 

 

 npx prisma init --datasource-provider sqlite

 

 

// prisma/prisma.schema

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

 

 

DB 마이그레이션 실행

npx prisma migrate dev --name init

 

 

// prisma/prisma.schema

datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}

 

// .env

DATABASE_URL="file:./dev.db"

 

//prisma/migrations/20230226182528_init/migration.sql

-- CreateTable
CREATE TABLE "User" (
    "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    "email" TEXT NOT NULL,
    "name" TEXT
);

-- CreateIndex
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");

 

'웹서비스' 카테고리의 다른 글

[Jest] 파일 구조 & 사용법  (2) 2024.12.26
React Testing Library  (0) 2024.12.26
브라우저의 렌더링 원리  (3) 2024.09.11
기술면접 준비  (0) 2024.09.11
프론트엔드 에러모니터링, 로그 데이터 수집의 필요성  (1) 2024.09.08