๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โš’ Backend/Node.js

[Node.js] Prisma๋ž€? (feat. ์‚ฌ์šฉํ•ด์•ผ ๋˜๋Š” ์ด์œ )

by Fomagran ๐Ÿ’ป 2022. 8. 2.
728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š”. Foma ์ž…๋‹ˆ๋‹ค!

 

์ง€๋‚œ Sequelize, TypeORM๊ณผ ๊ฐ™์€ ORM ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ด์–ด์„œ Prisma๋ผ๋Š” ORM ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~

 

(ํ˜น์‹œ ORM์— ๋Œ€ํ•ด ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„๋“ค์ด ์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”!)


Prisma๋ž€?

 

ํ”„๋ฆฌ์ฆˆ๋งˆ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„  ์•„๋ž˜์™€ ๊ฐ™์ด ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

"์šฐ๋ฆฐ ์ฐจ์„ธ๋Œ€ Node.js์™€ TypeScript ORM์•ผ"

 

์•„๋ž˜์™€ ๊ฐ™์ด 3๊ฐ€์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

  • Prisma Client: Node.js์™€ Typescript๋ฅผ ์œ„ํ•œ ์ž๋™ ์ƒ์„ฑ๊ณผ ์•ˆ์ „ํ•œ ํƒ€์ž… ์ฟผ๋ฆฌ ๋นŒ๋”
  • Prisma Migrate: ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ
  • Prisma Studio: ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ณ  ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” GUI ํŽธ์ง‘๊ธฐ

 

Prisma Client๋Š” REST API, GraphQL API, gRPC API๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋˜ํ•œ ๊ณต์‹ ๋ฌธ์„œ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ํŠน์ง•์„ ๋งํ•ด์ฃผ๋Š”๋ฐ, ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด์„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

"์šฐ๋ฆฐ ๋งŽ์€ ๋ฌธ์ œ์ ๋“ค์„ ๊ฒช๋Š” ๋‹ค๋ฅธ ORM๊ณผ๋Š” ๋‹ฌ๋ผ. ๊ธฐ์กด ORM์€ ๊ฐ์ฒด ์ง€ํ–ฅ ๋ฐฉ์‹์œผ๋กœ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์„ ๋งคํ•‘ํ•˜์ง€. ๊ทธ๊ฒŒ ๋ฐ”๋กœ ๋ฌธ์ œ์ ์ด์•ผ. ํ•˜์ง€๋งŒ ์šฐ๋ฆฐ Prisma shcema๋กœ ์„ ์–ธ์ ์ธ ๋ชจ๋ธ์„ ์ •์˜ํ•ด์„œ ๋ณต์žกํ•œ ๋ชจ๋ธ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์–ด"

 


Why Prisma?

 

์ €๋Š” ๊ณต์‹ ๋ฌธ์„œ์—์„œ ์ด ๋ถ€๋ถ„์ด ์ œ์ผ ์™€๋‹ฟ์•˜๋Š”๋ฐ์š”.

 

๊ฐ„๋‹จํ•˜๊ฒŒ ์š”์•ฝํ•˜์—ฌ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๊ฐ€์žฅ ๋จผ์ € ํ”„๋ฆฌ์ฆˆ๋งˆ๊ฐ€ ์ถ”๊ตฌํ•˜๋Š” ๊ฒƒ์€ "๊ฐœ๋ฐœ์ž์˜ ์ƒ์‚ฐ์„ฑ" ์ž…๋‹ˆ๋‹ค.

 

์›์‹œ์ ์œผ๋กœ SQL์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‚˜, ๊ธฐ์กด์˜ ORM์€ ๊ฐœ๋ฐœ์ž์˜ ์ƒ์‚ฐ์„ฑ์„ ๋–จ์–ด ๋œจ๋ฆฐ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š”๋ฐ์š”.

 

1. ์›์‹œ์  SQL ๋ฌธ์ œ์ 

 

๋จผ์ € ์›์‹œ์ ์œผ๋กœ SQL์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ๋งŽ์€ ์˜ค๋ฒ„ํ—ค๋“œ(์ˆ˜๋™ ์—ฐ๊ฒฐ, ๋ฐ˜๋ณต์ ์ธ ์ƒ์šฉ๊ตฌ) ๋“ฑ์„ ๋ฐœ์ƒ์‹œ์ผœ ์ƒ์‚ฐ์„ฑ์ด ์ €ํ•˜๋˜๊ณ , ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ์–ป์„ ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค.

 

2. ๊ธฐ์กด ORM ๋ฌธ์ œ์ 

 

๊ทธ ๋‹ค์Œ์œผ๋กœ ๊ธฐ์กด์˜ ORM์€ ์œ„ ์›์‹œ์ ์œผ๋กœ SQL์„ ์ž‘์„ฑํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋งŽ์€ ๋ฌธ์ œ์ ์„ ํ•ด์†Œํ•˜์˜€์ง€๋งŒ, ์‰ฝ๊ฒŒ ๋ชจ๋ธ์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๋ธŒ์ ํŠธ์— ์‰ฝ๊ฒŒ ๋งคํ•‘๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ž˜๋ชป๋œ ๊ฐ€์ •์— ๊ธฐ๋ฐ˜์„ ๋‘๊ณ  ์žˆ์–ด ๋งŽ์€ ๋ณต์žก์„ฑ๊ณผ ํ•จ์ •์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ํ”„๋ฆฌ์ฆˆ๋งˆ๊ฐ€ ๊ฐ•์กฐํ•˜๋Š” ๊ฒƒ์€ "์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋Š” SQL์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ์— ๊ด€์‹ฌ์„ ๊ธฐ์šธ์—ฌ์•ผ ํ•œ๋‹ค." ์ž…๋‹ˆ๋‹ค.

 

๊ฐœ๋ฐœ์ž๋Š” SQL ์ฟผ๋ฆฌ์—์„œ "์˜ฌ๋ฐ”๋ฅธ ์ผ์„ ํ•˜๋Š” ๊ฒƒ"์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์•ผ ํ•˜๋ฉฐ, ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ์ถ”์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

 

์ด๊ฒƒ์€ ์ถ”์ƒํ™”๊ฐ€ ๊ฐœ๋ฐœ์ž์˜ ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ํŠน์ • "๊ฑด์ „ํ•œ" ์ œ์•ฝ์„ ๋ถ€๊ณผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€