코딩하는 문과생
[Node.js] Prisma ORM 본문
[서론]
Prisma - Next-generation Node.js and TypeScript ORM for Databases
Prisma is a Node.js and TypeScript ORM that can be used to build GraphQL servers, REST APIs, microservices & more.
www.prisma.io
Prisma를 ORM으로 사용하면서 느낀 점은 정말 편하다는 것이다.
"Next-generation Node.js and TypeScript ORM"
Prisma를 사용하며 느낀 점은 다음과 같다.
- prisma client를 이용해 쉽게 데이터를 조작할 수 있다
- DB내 참조관계를 prisma가 알아서 관리해주므로 self 참조나 ManyToMany 구현을 쉽게 할 수 있다.
- prisma 자동완성을 통해 쉽게 모델링을 할 수 있다. (코드작성보다 모델설계에 더 집중할 수 있다.)
- prisma studio라는 툴을 이용하여 브라우저에서 데이터 조회 및 조작을 쉽게 할 수 있다.
1. 데이터를 가져오고 조작하기 편하다.
관계형DB의 테이블을 Node.js 프로젝트에서 객체단위로 호출하며, 필요에 따라 조건을 추가해주면 사용자가 필요로 하는 데이터를 쉽게 가져 올 수 있다. 다음은 데이터를 읽고 새롭게 생성하는 예시이다.
- Read
const room = client.room.findUnique({where: {id}, select: {id: true}});
- Create
const user = client.user.create({data: {username, email, firstName, lastName, password}});
2. 관계 설정하기 편하다.
관계를 설정함에 있어 self 참조나 ManyToMany 설정 시 개발자는 단순히 필요한 속성만 모델에 지정해주면 Prisma가 알아서 관계 맵핑 테이블을 생성하여 데이터를 관리해준다. (다른 ORM은 깊게 보지 않아서 잘 모르겠다.)
- self reference
model User {
id Int @id @default(autoincrement())
followers User[] @relation("FollowRelation", references: [id])
following User[] @relation("FollowRelation", references: [id])
}
- ManyToMany
model User {
id Int @id @default(autoincrement()) rooms Room[]
}
model Room {
id Int @id @default(autoincrement())
users User[] // ManyToMany
}
-OneToMany
model User {
id Int @id @default(autoincrement()) Photo Photo[]
}
model Photo {
id Int @id @default(autoincrement())
user User @relation(fields: [userId], references: [id])
userId Int
}
3. 개발하기 편하다.
개발 시에 편했던 점은 모델에 참조하고자 하는 모델명을 적어주면 알아서 필요한 설정정보를 자동으로 삽입해주는 것도 개발자 입장에서는 엄청 편했다.
4. Prisma Studio
$ npx prisma studio
위 명령어를 사용하면, 관리하고 있는 모델을 브라우저에서 조회 및 조작이 가능하다.
- 시작화면
- 데이터 조회
- 데이터 조작
- 실제 테이블
'웹 프로그래밍 > Node.js' 카테고리의 다른 글
[Node.js] NestJS & GraphQL (0) | 2021.09.09 |
---|---|
[Node.js] Apollo Server & GraphQL (0) | 2021.07.06 |