}

Prisma란 무엇인가?

Prisma는 Node.js와 TypeScript 환경에서 사용하는 차세대 ORM(Object-Relational Mapper)으로, 데이터베이스 작업을 획기적으로 간단하게 만들어줍니다.


ORM(Object-Relational Mapper)이란?

ORM이란 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 데이터 변환을 자동화해주는 기술입니다.

쉽게 말하면, 

 

  • 개발자가 직접 복잡한 SQL 쿼리를 작성하지 않고
  • 자바스크립트, 타입스크립트 같은 언어의 코드만으로 데이터베이스 작업을 할 수 있도록 도와주는 기술입니다.

ORM이 없을 때, 사용자 정보를 가져오기 위해서는 아래와 같이 작성해야 합니다. 

// 직접 SQL 쿼리를 작성해야 함
const result = await db.query('SELECT * FROM users WHERE id = ?', [1]);

// 결과를 직접 변환해야 함
const user = {
  id: result[0].id,
  email: result[0].email,
};

 

 

ORM이 있을 때 (예: Prisma), 사용자 정보를 가져오기 위해서 아래와 같이 하면 됩니다.

// SQL 없이 직관적으로 데이터를 가져올 수 있음
const user = await prisma.user.findUnique({
  where: { id: 1 }
});

Prisma의 핵심 개념

Prisma Schema

Prisma의 모든 것은 schema.prisma 파일에서 시작됩니다. 이 파일은 데이터베이스 모델과 관계를 정의하는 역할을 합니다.

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

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  content   String?
  authorId  Int
  author    User    @relation(fields: [authorId], references: [id])
}

Prisma Client

Prisma Client는 위 스키마를 기반으로 자동 생성된 DB 클라이언트로, 직관적인 API를 제공합니다.

// Prisma Client로 데이터 가져오기
const users = await prisma.user.findMany({
  where: { email: { contains: '@gmail.com' } },
});

Prisma Migrate

데이터베이스 스키마를 변경할 때마다 수동으로 SQL을 작성하는 번거로움에서 벗어날 수 있도록 Prisma는 자동 마이그레이션 기능을 제공합니다.

npx prisma migrate dev

이 명령어를 통해 Prisma가 자동으로 변경된 내용을 반영한 SQL 마이그레이션을 생성하고 데이터베이스를 업데이트해줍니다.