data life

[Prisma] Prisma 시작하기(1) 본문

Back-end

[Prisma] Prisma 시작하기(1)

주술회전목마 2023. 11. 12. 22:46

출처 : https://blog.codefactory.ai/static/457b62aed0d33c9ed808e5191767df5a/14b42/thumb.jpg


이번 포스팅에서는 차세대 ORM 프레임워크로 각광받고 있는 Prisma에 대해서 함께 알아봅시다.

 

공식문서에서는

차세대 Node.js 및 TypeScript의 ORM 라고 소개되어있습니다.

 

여기서 ORM이란?

Object Relational Mapping으로 ‘객체로 연결을 해준다’는 의미로, 애플리케이션과 데이터베이스 연결 시 SQL언어가 아닌 애플리케이션 개발언어로 데이터베이스를 접근할 수 있게 해주는 툴입니다.

자바스크립트 혹은 타입스크립트 코드와 데이터베이스 사이의 연결다리라고 이해하시면 되겠습니다.

SQL문법 대신 애플리케이션의 개발언어(자바스크립트 혹은 타입스크립트)를 그대로 사용할 수 있게 함으로써, 개발 언어의 일관성과 가독성을 높여준다는 장점을 갖고 있습니다. 또한 타입스크립의 장점도 같이 이용할 수 있다는 점!

 

Prisma를 이용하기 위해서는 자체적인 스키마 문법을 이용해야 합니다.

이 스키마를 통해 데이터베이스 마이그레이션과 클라이언트 코드 생성을 완전히 자동으로 생성해줍니다.

따라서, 해당 스키마 파일 하나로 관리하기 때문에 작성하는 코드가 줄어들고 유지보수도 훨씬 쉬워지는 장점이 존재합니다.

 

또한, Prisma studio를 이용하여 데이터베이스의 데이터를 눈으로 보고 편집이 가능합니다.

데이터를 탐색하거나 조작하는 데에 있어 편리하게 사용이 가능합니다.

 

 

 

출처:Prisma 공식문서

 

 

 

 

설치하기

 

먼저, visual studio를 열어 해당 prisma 확장 프로그램을 설치해줍니다. 더욱 유용하게 작업할 수 있습니다.

 

 

저는 TypeScript와 MySQL 환경으로 작업할 예정입니다. 

다음과 같이 CLI에 입력하여 설치를 마쳐주세요.

npm install prisma -D

 

설치를 마쳤으면 init 해줍니다.

npx prisma init

 

해당 명령은 schema.prisma라는 파일과 프로젝트 루트에 .env 파일을 포함하는 prisma라는 새 디렉토리를 생성합니다. 

- schema.prisma는 데이터베이스 연결과 Prisma Client 생성기가 있는 Prisma 스키마를 포함합니다.

- .env는 환경 변수를 정의하기 위한 dotenv 파일입니다.

 

 

init까지 완료해주었다면 위와 같은 안내 사항들이 나옵니다.

번역하면 다음과 같습니다.

 

1. .env 파일의 DATABAST_URL이 기존 데이터베이스를 가리키도록 설정합니다. 데이터베이스에 아직 테이블이 없는 경우 https://pris.ly/d/getting-started 을 읽으십시오.

// .env
# Environment variables declared in this file are automatically made available to Prisma.
# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema

# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB.
# See the documentation for all the connection string options: https://pris.ly/d/connection-strings

DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public"

 

postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA

 

- USER : 해당 데이터베이스의 사용자의 이름

- PASSWORD : 데이터베이스 사용자의 비밀번호

- HOST : 호스트 이름의 이름 (로컬 환경 : localhost)

- PORT : 데이터베이스 서버가 실행 중인 포트

- DATABASE : 데이터베이스 이름

- SCHEMA : 데이터베이스에 존재하는 스키마 이름

 

 

2. schema.prisma에서 데이터 소스 블록의 공급자를 데이터베이스와 일치하도록 설정합니다. postgresql, mysql, sql server, mongodb 또는 rockeachdb.

 

저는 mysql로 이용하기 때문에 해당 postgresql을 mysql로 변경해주었습니다.

 

그런 다음, 해당 schema.prisma 파일에서 데이터를 모델링해줍니다. 말 그대로 데이터베이스의 모든 설명을 담는 파일입니다. 

다음은 schema.prisma 작성 예시입니다. 

model User {
  id    Int     @id @default(autoincrement()) //해당 모델의 id값으로 자동적으로 증가하도록 지정
  email String? @unique  //필수 값은 아니지만 유니크한 값으로 지정
  name  String
  posts Post[]
}

model Post {
  id        Int     	@id @default(autoincrement())
  title     String
  content   String?
  published Boolean 	@default(false)
  author    User    	@relation(fields: [authorId], references: [id])
  authorId  Int
  createdAt DateTime 	@default(now()) //생성일자로 기본값으로 현재 날짜값(now())을 지정
  updatedAt DateTime 	@updatedAt //업데이트마다 변경됨을 지정
}

 

 

3. prisma db pull을 실행하여 데이터베이스 스키마를 Prisma 스키마로 바꿉니다.

 

해당 명령어는 만들어진 데이터베이스 스키마를 추가해주는 명령어로 깃 pull과 비슷하다고 생각하시면 이해가 빠를 수 있겠네요.

 

 

4. prisma generate를 실행하여 Prisma Client를 생성한 후 데이터베이스 쿼리를 시작할 수 있습니다.

 

Prisma 스키마에 반영된 데이터베이스를 변경할 때마다 Prisma 클라이언트를 수동으로 다시 생성하여 디렉터리에 생성된 코드를 업데이트해야 합니다.

 

 

Prisma는 해당 DB들을 모두 지원해줍니다. 

 

 

지금까지 설치 및 시작하는 방법에 대해 다뤄보았고 다음 글에서 사용방법에 대해 다룰 예정입니다.

'Back-end' 카테고리의 다른 글

[PlanetScale] PlanetScale에 대해 알아보자  (0) 2023.11.07
MongoDB  (0) 2022.12.10
Nodejs package.json  (0) 2022.12.04