[Node.js] ORM

GDORI·2024년 9월 5일
0

Node.js

목록 보기
4/11

ORM

아 세상... 외울게 너무 많습니다.
ORM 객체지향언어에서 사용하는 객체와 관계형 데이터베이스에서 사용하는 테이블을 자동으로 연결해주는 기술입니다. 데이터베이스를 다룰 때 SQL을 직접 작성하지 않고 객체지향방식으로 데이터를 처리하죠.
처음 모델링할 때 빼고는 편한 것 같습니다.

Prisma

Prisma는 ORM 도구 중 하나입니다. JS 환경 뿐 아니라 TypeScript 에서도 사용이 가능하며 학습하기 쉬운 도구이라고는 하나... 넵 ..

schema.prisma

schema.prisma 파일은 prisma가 사용할 데이터베이스 설정정보를 정의하는 파일입니다. 최초 파일은 datasourcegenerator로 이루어져 있죠.
datasource는 DB정보와 주소를 설정할 수 있고, generatorprisma가 어떤 코드를 자동생성할지 지정하는 역할을 합니다.

우리는 prisma-client-js를 사용할 예정이지만, 그 외에 prisma-migrate, prisma-studio 등이 있다고 합니다.

데이터베이스 URL의 경우
protocol://BaseURL/path/args 로 구성되며, 예시로
mysql://root:password@localhost:port/dbname?connection_limit=5 로 쓸 수 있습니다.

Prisma model

model 구문은 Prisma가 사용할 DB의 테이블 구조를 정의하기 위하여 사용됩니다.
위에 쓰인 schema.prisma 파일에 작성합니다.

// schema.prisma

model Products {
  productId   Int     @id @default(autoincrement()) @map("productId")
  productName String  @unique @map("productName")
  price       Int     @default(1000) @map("price")
  info        String? @map("info") @db.Text

  createdAt DateTime @default(now()) @map("createdAt")
  updatedAt DateTime @updatedAt @map("updatedAt")

  @@map("Products")
}

왼쪽에 쓰인 이름은 node.js 내에서 사용될 이름이고, @map()에 써있는 이름은 MySQL 내에서 사용될 이름입니다.

npx prisma db push
위와 같이 모델을 작성하고, 터미널에서 push 명령어를 입력하면 제네레이트가 같이 실행됩니다.
실제 데이터베이스에 반영되어 새로운 테이블을 만들거나 구조 변경 시 사용할 수 있습니다.

Prisma Method

Prisma는 데이터베이스와의 상호작용을 위해 다양한 CRUD 메서드를 제공합니다.

  1. Create (생성)

새로운 레코드를 데이터베이스에 생성합니다.

await prisma.user.create({ data: { name: "Gdori" } });
  1. Read (조회)

여러 레코드를 데이터베이스에서 조회합니다.

await prisma.user.findMany();
  1. Update (수정)

기존의 레코드를 수정합니다.

await prisma.user.update({ where: { id: 1 }, data: { name: "Gsooni" } });
  1. Delete (삭제)

특정 레코드를 삭제합니다.

await prisma.user.delete({ where: { id: 1 } });
profile
하루 최소 1시간이라도 공부하자..

0개의 댓글