TIL (Prisma)

2024. 5. 21. 23:14TIL

 

Prisma

 

1. Prisma란?

 

- PrismaORM(Object Relational Mapping)으로써 자바스크립트 객체(Object)와 데이터베이스의 관계(Relation)를  연결(Mapping)해주는 도구이다.

- Node.js 환경에서는 다양한 ORM( TypeORM, Prisma, Sequelize )이 존재하는데 그중 TypeScript에서도 사용할 수 있고, ORM 개념을 학습하기 쉬운 것이Prisma 이다.

( MongoDB에 ODM(Object Document Mapping)으로 mongoose가 있었다면 , SQL에 여러가지 ORM이 존재한다.)

 

2. ORM을 사용하는 이유?

 

- 프로젝트를 만들 때 Raw Query가 아닌 ORM을 사용하는 대표적인 이유 2가지로 첫 번째는 사용하는 데이터베이스가 언제 바뀔 지 알 수 없기 때문에 속성값만 변경하면 언제든지 DB를 변경할 수 있기 때문입니다. 두번째로는 DB나 Table 속성이 바뀌었을 때 빠르게 수정이 가능하기 때문입니다.

 

3.Prisma 시작하기

 

1) 라이브러리 설치

# yarn 프로젝트를 초기화합니다.
yarn init -y

# express, prisma, @prisma/client 라이브러리를 설치합니다.
yarn add express prisma @prisma/client

# nodemon 라이브러리를 DevDependency로 설치합니다.
yarn add -D nodemon

# 설치한 prisma를 초기화 하여, prisma를 사용할 수 있는 구조를 생성합니다.
npx prisma init

- @prisma/client는 Node.js에서 Prisma를 사용할 수 있게 한다.

- nodemon은 개발 코드가 변경 되었을 때 자동으로 서버를 재시작 해준다.

- npx prisma init 로 생성된 구조

내 프로젝트 폴더 이름
├── prisma
│   └── schema.prisma
├── .env
├── .gitignore
├── package.json
└── yarn.lock

 

* nodemon - package.json에 nodemon을 이용하여 서버 실행 스크립트를 등록하여 서버를 매번 명령어를 입력하지 않아도 서버를 시작할 수 있다.

- 스크립트 등록하는 법 : package.json 파일에 입력

"scripts": {
	"dev": "nodemon app.js"
},

- yarn run dev 입력하면  서버가 열리게 된다.

변경시 자동 재시작

4. Prisma datasource

 

- datasource : Prisma가 데이터베이스를 연결할 수 있도록 설정하고 관리하는 데 필요한 정보를 설정하는 구문.

- datasoure 설정하기

// schema.prisma <- 이 폴더에서 데이터베이스 속성 관리

datasource db {
  // MySQL 데이터베이스 엔진을 사용합니다.
  provider = "mysql"
  // 데이터베이스 연결 정보를 .env 파일의 DATABASE_URL 로부터 읽어옵니다.
  url      = env("DATABASE_URL")
}

* provider : Prisma가 사용할 데이터베이스 엔진의 유형

* url : 데이터베이스를 연결하기 위한 URL  

* env("DATABASE_URL") : 데이터베이스 주소가 노출되지 않게 작성하는 dotenv 문법으로,  env()문법은 .env 파일에 정의되어 있는 정보를 해당 schema.prisma 파일로 불러오는 것이다.

* dotenv : 민감한 정보를 노출시키지 않도록 보호해주고, 개발 환경에 따라 다르게 설정해야 하는 값을 별도의 파일에서 관리할 수 있게 해주는 환경변수를 관리해주는 모듈이다.

- .env 파일확인 (  key-value로 구성 )

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

 

 

5. 데이터베이스 URL

 

- 데이터베이스 URL은 Prisma가 어떤 데이터베이스와 어떻게 연결할지를 알려주는 중요한 정보로 

  .env파일에서 확인한 것 처럼 데이터베이스와 연결하기 위해서는 URL주소를 생성해야 한다.

- 구성 : Protocol / Base URL(엔드 포인트 아이디, 패스워드, 포트 번호) / Path( MySQL에서 사용할 데이터베이스 이름 )/ Argument

데이터베이스엔진://마스터사용자이름:마스터암호@RDS엔드포인트:포트번호/사용할DB이름"
ex)
mysql://user1:abcd1234@RDS엔드포인트:3306/test-prisma

 

 

'TIL' 카테고리의 다른 글

TIL (모의면접)  (0) 2024.05.23
TIL ( 쿠키와 세션)  (0) 2024.05.22
TIL ( SQL )  (0) 2024.05.20
TIL (AWS 생성하는 방법)  (0) 2024.05.17
TIL( MongoDB)  (0) 2024.05.14