Prisma에 대해 알아보자

GwangSoo·2024년 6월 16일
0

개인공부

목록 보기
4/34
post-thumbnail

node.js를 공부하다가 ORM의 필요성을 느끼게 되어 라이브러리를 찾아보았다.

이 글에서는 ORM은 무엇이고 ORM 라이브러리 중 왜 Prisma를 선택하게 되었는지 써보겠다.

ORM이란?

ORM(Object Relational Mapping)객체와 관계형 데이터베이스의 데이터를 매핑하는 것을 의미한다. SQL문을 직접 작성하는 것이 아니기 때문에 코드의 가독성을 높일 수 있고, 데이터베이스를 더 쉽게 조작할 수 있다.

ORM 라이브러리 비교

node.js에서 널리 사용되고 있는 ORM 라이브러리를 조사 해보았다. 그 중 Sequelize, TypeORM, Prisma가 많이 나왔고, npm trends에서 세 개의 라이브러리를 비교 해보았다.

Prisma가 계속 치고 올라오는 것을 볼 수 있었고 현재는 제일 인기 많은 라이브러리임을 알 수 있었다.

Prisma의 장점

공식문서에 있는 장점들을 가져와 보았다.

데이터 모델이 직관적이다

Prisma 스키마는 직관적이고 사람이 읽기 쉽게 선언할 수 있게 해준다.
아래는 간단한 예시이다.

model Post {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  title     String   @db.VarChar(255)
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id])
  authorId  Int
}

Type-Safe하다

Prisma Client는 스키마에 맞춤형 쿼리 빌더이다. 또한 데이터베이스를 처음 접하는 사람들 혹은 숙련자들에게 API가 직관적으로 보이도록 설계하였다.

마이그레이션이 번거롭지 않다

Prisma 마이그레이션은 Prisma 스키마에서 SQL 마이그레이션을 자동으로 생성해준다.

데이터베이스를 브라우저로 볼 수 있다

개인적으로 생각하는 가장 큰 장점이다. 서버를 실행시켜서 데이터의 조회, 추가, 수정 그리고 삭제를 할 수 있다.

Quickstart를 보며 따라하다보니 위의 장점들이 너무나 와닿았고 Prisma에 대해 공부하기로 결정했다.

실습 중 마주한 오류

pnpm dlx prisma migrate dev --name init를 이용하여 migrate하는 과정에서 아래와 같은 오류가 발생했다.

이유는 이전 실행으로 인해 migrations 폴더가 이미 존재했기 때문에 안됐던 것이다. 매번 수동으로 지우고 script를 실행하는것이 번거롭다고 생각했다.
때문에 migrate라는 script를 작성하였고, 이는 migrations라는 폴더를 삭제하고 migrate하는 script를 실행하도록 했다.

"scripts": {
	...
    "migrate": "rm -rf prisma/migrations && pnpm dlx prisma migrate dev --name init",
  	...
  }

위 script를 실행하면 아래와 같은 화면이 나온다.

y를 누르게 되면 migrate가 완료되지만 DB의 데이터를 초기화 시키니 유의하면서 사용해야 한다.

0개의 댓글