안녕하세요. 개발자 윤익후 입니다! 🚀
prisma에 대해 한국어로 된 정보들이 많이 없고, 있다 하더라도 prisma v1 이
대부분인 것 같아 한국어로 꾸준히 포스팅을 해 보려고 합니다.
prisma를 알기 전에 ORM에 대해서 먼저 알아보도록 합시다 !
ORM(Object-relational mapping) 은 DB데이터(schema)를 객체(Object)로 매핑해 주는 역할을 하는 것입니다. 모델링 된 객체와 관계를 바탕으로 SQL을 자동으로 생성해 주는 도구입니다.
Node진영에서는 대표적으로 Sequelize를 많이 사용합니다.
Prisma는 기존 ORM과 근본적으로 다른 ORM 이고,
기존 ORM이 격는 많은 문제들을 겪지 않는다. - prisma docs
프리즈마 공식 문서에 보면, Prisma는 기존 ORM의 문제를 해결해준다고 설명하고 있습니다.
Prisma는 Prisma는 Schema
Prisma introspect
Prisma migration
Prisma client
Prisma studio
로 구성되어 있습니다.
각 항목의 상세한 내용들은 다음번 게시물에서 살펴보도록 하고, 오늘은 간략한 구성에 대해서 알아보도록 하겠습니다!
Prisma v1 에서는 graphQL (추후에 별도로 설명 할 예정입니다.)을 통해
model을 정의하였다면, Prisma v2에 와서는 PSL(Prisma Schema Language)을 통해 model을 정의합니다.
Prisma에서는 기존의 DataBase를 수작업으로 ORM에 매핑해줄 필요가 없습니다 !
Database URL을 설정하고, npx prisma introspect
한번이면
기존의 Database의 구조를 자동으로 Prisma schema 로 불러올 수 있습니다.
기존에 있던 Database 에 Prisma를 사용하시려는 분들에게 유용한 기능입니다.
Prisma Migrate
를 이용하면 새로운 테이블을 생성하거나, 기존 테이블에 열을 추가하는등
Database를 변경하는 기능(도구)입니다.
Prisma schema를 직접 변경하여 Database를 변경함으로써, 복잡한 SQL문을 사용하지 않아도 됩니다 !
Prisma CLI 상에서 사용할 수 있습니다.
아직은 Experimental 상태여서 production 환경에서는 사용하지 않는 것이 좋다고 합니다.
아래의 코드로 schema를 DB에 반영하고, schema를 기반으로 Prisma Client를 업데이트 할 수 있습니다.
npx prisma migrate save --experimental
npx prisma migrate up --experimental
npx prisma generate
prisma Client는 데이터에 맞춰 자동 생성되는 쿼리생성기 입니다.
위에서 정의한 prisma schema를 기반으로 DB에 요청을 보낼 수 있습니다.
prisma Client 는 꼭 graphQL과 같이 사용하지 않아도 됩니다!
종종 기존의 REST API에 prisma를 도입하시려는 분들이 질문을 주시곤 합니다.
prisma를 사용하면, API Endpoint를 다시 만들어야 하는거 아니야?
Prisma Client
는 데이터베이스로 쿼리를 보내는 것만 책임지고 있기 때문에, 어떤 HTTP 서버 라이브러리나
웹 프레임워크와도 결합 될 수 있습니다. -Prisma Docs
아래는 Prisma와 같이 사용할 수 있는 라이브러리 및 프레임워크입니다.
Express
koa
hapi
Fastify
Sails
AdonisJs
NestJS
Next.js
Foal TS
Polka
Micro
Feathers
Prisma Studio는 GUI로 지원하는 Database 편집기입니다.
SQL이나 Prisma 쿼리 없이, DB를 수정, 편집 할 수 있습니다.
비 개발자가 사용하기에도 직관적인 도구라서, 협업을 하시는 분들이라면 한번쯤 사용해 볼 만한 기능입니다.
아래의 명령어로 Prisma studio를 실행 시킬 수 있습니다.
npx prisma studio
오늘은 간략하게 Prisma의 구성과, ORM에 대하여 알아봤습니다.
다음 포스트에서는 Prisma를 사용하기 위해 알아야 할 PSL(Prisma Schema Language)에 대하여 알아보도록 하겠습니다!
ㅎㅇ