Getting started Prisma

Taegyung Gong·2020년 11월 23일
2

Prisma

목록 보기
1/1
post-thumbnail

What is Prisma?

Prisma는 Javascript와 Typescript와 모두 호환되는 데이터베이스 툴킷입니다.

Prisma is ORM?

Prisma는 기존 ORM과 근본적으로 다르며 일반적인 ORM과 관련된 많은 문제를 겪지 않는 새로운 종류의 ORM입니다. - Prisma Document

PrismaPrisma schema를 통해 모델을 정의하고 정의한 모델에 맞는 쿼리를 자동으로 생성하는 쿼리 빌더인 Prisma Client를 통해 쿼리를 제공합니다.


Prisma는 오픈 소스 차세대 ORM으로 다음 세가지 중요한 부분으로 구성됩니다.

  • Prisma Client: Auto-generated and type-safe query builder for Node.js & TypeScript
  • Prisma Migrate (experimental): Declarative data modeling & migration system
  • Prisma Studio: GUI to view and edit data in your database


Setting Up Prisma

Prisma Schema

Prisma schema에서 아래 3가지를 설정할 수 있습니다.

  • Data sources: Prisma가 연결해야하는 데이터 소스의 세부 정보를 지정합니다.
  • Generators: Prisma Client를 기반으로 생성되어야 하는 클라이언트를 지정합니다.
  • Data model definition: 애플리케이션 모델 및 관계를 지정합니다.

Migration

schema.prisma에서 모델을 작성하고 migrate 과정을 통해 DB 테이블을 생성할 수 있습니다.

Migration 명령어

$ yarn prisma migrate save --name init --experimental

migrate save 명령어를 통해 migration 히스토리를 생성합니다.

$ yarn prisma migrate up --experimental

생성한 히스토리를 바탕으로 migrate up 을 통해 실제 DB의 테이블을 생성합니다.
데이터베이스에 접속하면 모델을 작성한대로 테이블과 _Migration 테이블이 생성된 것을 확인할 수 있습니다.



Introspect

$ yarn prisma introspect

위 명령어로 Prisma에서 데이터 베이스 테이블을 불러 올 수 있습니다.
만약 Prisma CLI가 데이터 베이스를 검사하고 다른 부분이 있다면 Prisma schema를 업데이트 해줍니다.



Generate

$ yarn install @prisma/client
$ yarn prisma generate

데이터베이스 제어하는 명령어에 대해 알아보겠습니다.
Prisma로 데이터베이스를 제어하려면 제어할 prisma client가 필요합니다.
Prisma client를 설치하고 generate 명령어를 통해 Prisma schema를 읽고 node_modules/에 Prisma client를 생성합니다.



How to use Prisma?

Prisma client를 이용해서 아주 쉽게 직관적으로 DB를 조작할 수 있습니다.

import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

export default {
  Query: {
    allUsers: () =>
      prisma.user.findMany({
        include: {
          posts: true,
        },
      }),
  },
};

아주 간단하죠? 😊
Create, Update, Dlete와 관련된 다양한 내용들은 공식 문서를 참고 부탁드립니다!

Why use Prisma?

  • Prisma Client는 데이터베이스 쿼리에 자동 완성 기능을 제공합니다.
    • 자동 완성은 개발 단계에서 아주 강력하고 편리한 기능이겠죠? 😊
  • 사용 해 본 결과 Sequelize와 같은 다른 인기있는 데이터베이스 도구와 비교할 때 매우 간단했습니다.
  • 풍부하고 친절한 prisma 문서를 통해 예제를 빠르게 배우고 시작할 수 있습니다.
  • 사용하기 쉽고 직관적 인 구문
  • 특히 GraphQL을 활용하는 스택에서 매우 우수하다고 합니다.
  • 생산성의 증가


마치며...

Prisma를 사용하면서 느낀 점은 개인적으로 공식문서가 깔끔하게 잘 정리되어있어 참고하고 배우기에 좋았습니다. 또한 개발하면서 자동 완성 기능이 아주 잘 만들어져 있었던 점 또한 인상 깊었습니다. 이러한 장점들로 인해 자연스럽게 생산성 또한 높아졌기 때문에 개발하는 단계에서 편했습니다. GraphQL을 공부하고 ORM을 고민하고 계신다면 한번 사용해 보시는 건 어떨까요? 😄

아직 Prisma를 공부하고 배우는 단계라 부족하기 때문에 잘못된 개념이 있을 수 있습니다. 잘못된 부분과 수정이 필요한 부분을 알려주시면 감사하겠습니다. 🤭

참고

공식 문서
공식 블로그
참고 블로그
참고 블로그
참고 블로그

profile
Web developer🐳

2개의 댓글

comment-user-thumbnail
2020년 11월 28일

우와 정리가 너무 깔끔하세요..
연재 계속 하실까요?? +_+/

1개의 답글