์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

Prisma ORM ์‹ค๋ฌด ์„ค๊ณ„์™€ ์šด์˜ ๊ฐ€์ด๋“œ

Prisma ORM์€ ์ƒ์‚ฐ์„ฑ์ด ๋†’์€ ๋„๊ตฌ์ด์ง€๋งŒ, ์‹ค๋ฌด์—์„œ๋Š” ๋‹จ์ˆœ CRUD๋ฅผ ๋„˜์–ด์„œ ์Šคํ‚ค๋งˆ ์„ค๊ณ„, relation ๊ตฌ์กฐ, ์ƒํƒœ๊ฐ’ ์„ค๊ณ„, transaction, migration ์šด์˜, ์กฐํšŒ ์„ฑ๋Šฅ๊นŒ์ง€ ํ•จ๊ป˜ ๊ณ ๋ฏผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋Š” Prisma ๋ฌธ๋ฒ•์„ ๋‚˜์—ดํ•˜๋Š” ์ž…๋ฌธ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ, NestJS ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ค๋ฌด์—์„œ Prisma๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•˜๊ณ  ์šด์˜ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์ •๋ฆฌํ•œ ์‹ค์ „ํ˜• ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•์€ ์ตํ˜”์ง€๋งŒ, ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋ธ์„ ๋‚˜๋ˆ„๊ณ , ์–ด๋–ค ๊ฒฝ์šฐ์— transaction์„ ์จ์•ผ ํ•˜๋ฉฐ, migration์„ ์–ด๋–ป๊ฒŒ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐ˜์˜ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ง‰๋ง‰ํ–ˆ๋˜ ๋ถ„๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜๊ฐ•์ƒ์€ ์ด ๊ฐ•์˜๋ฅผ ํ†ตํ•ด Prisma๋ฅผ ๋‹จ์ˆœํžˆ โ€œํŽธํ•œ ORMโ€์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ˆ˜์ค€์„ ๋„˜์–ด, ์œ ์ง€๋ณด์ˆ˜์— ์œ ๋ฆฌํ•œ schema๋ฅผ ์„ค๊ณ„ํ•˜๊ณ , ์‹ค๋ฌด์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ฏธ๋ฆฌ ํ”ผํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ค€์„ ์ตํžˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

1๋ช… ์ด ์ˆ˜๊ฐ•ํ•˜๊ณ  ์žˆ์–ด์š”.

๋‚œ์ด๋„ ์ดˆ๊ธ‰

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

๋ฐฑ์—”๋“œ
๋ฐฑ์—”๋“œ
orm
orm
nodejs
nodejs
nestjs
nestjs
๋ฐฑ์—”๋“œ
๋ฐฑ์—”๋“œ
orm
orm
nodejs
nodejs
nestjs
nestjs

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • Prisma schema๋ฅผ ์‹ค๋ฌด ๊ด€์ ์—์„œ ์„ค๊ณ„ํ•˜๊ณ , nullable / enum / unique / index๋ฅผ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์„ ํƒํ•ด์•ผ ํ•˜๋Š”์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • relation ๋ชจ๋ธ๋ง, ์ƒํƒœ๊ฐ’ ์„ค๊ณ„, soft delete ๊ฐ™์€ ๋ฐ˜๋ณต๋˜๋Š” ์„ค๊ณ„ ๋ฌธ์ œ๋ฅผ ์‹ค๋ฌด ๊ธฐ์ค€์œผ๋กœ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • transaction๊ณผ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ๋‹จ์ˆœ ๋ฌธ๋ฒ•์ด ์•„๋‹ˆ๋ผ, ์ค‘๋ณต ์š”์ฒญยท์ƒํƒœ ์ „์ดยท๋ฉฑ๋“ฑ์„ฑ ๊ด€์ ์—์„œ ์ดํ•ดํ•˜๊ณ  ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • migration์„ ๊ฐœ๋ฐœ ํŽธ์˜๊ฐ€ ์•„๋‹ˆ๋ผ ์šด์˜ ์ ˆ์ฐจ๋กœ ๋ณด๊ณ , ๋” ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐ˜์˜ํ•˜๋Š” ๊ธฐ์ค€์„ ์ตํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Prisma ์‹ค๋ฌด ๊ฐ€์ด๋“œ

ํ† ์ด ํ”„๋กœ์ ํŠธ์—์„œ ๋ชฐ๋ž๋˜ ์‹ค์ „ ์„ค๊ณ„ ํŒจํ„ด


์ด๋Ÿฐ ๋ถ„๊ป˜ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค

Prisma๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š”๋ฐ ์ด๋Ÿฐ ๊ฒฝํ—˜์ด ์žˆ์œผ์‹  ๋ถ„

  • include๊ฐ€ ์ ์  ๊ธธ์–ด์ง€๊ณ , ์‘๋‹ต์ด ๋ฌด๊ฑฐ์›Œ์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค

  • migration์ด ๋ฌด์„œ์›Œ์กŒ๋‹ค. ์šด์˜์—์„œ ํ•œ ๋ฒˆ ์‹คํŒจํ•œ ์ ์ด ์žˆ๋‹ค

  • ์ƒํƒœ๊ฐ’์ด ๋Š˜์–ด๋‚˜๋ฉด์„œ ์„œ๋น„์Šค ๋ถ„๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์กŒ๋‹ค

  • transaction์„ ์“ฐ๋Š”๋ฐ๋„ ์ค‘๋ณต ์š”์ฒญ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค

  • soft delete๋ฅผ ๋„์ž…ํ–ˆ๋”๋‹ˆ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ณณ์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค

์ด๋Ÿฐ ๊ณ ๋ฏผ์„ ํ•˜๊ณ  ๊ณ„์‹  ๋ถ„

  • NestJS + Prisma ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์žก์•„์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค

  • Repository ํŒจํ„ด์„ ์จ์•ผ ํ•˜๋Š”์ง€, ์ง์ ‘ ํ˜ธ์ถœํ•ด๋„ ๋˜๋Š”์ง€ ๊ธฐ์ค€์ด ์—†๋‹ค

  • ํŒ€์—์„œ Prisma ์‚ฌ์šฉ ๊ธฐ์ค€์„ ๋ฌธ์„œ๋กœ ์ •๋ฆฌํ•ด์•ผ ํ•œ๋‹ค

  • ํ† ์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ž˜ ๋๋Š”๋ฐ ์‹ค๋ฌด์—์„œ๋Š” ์ž๊พธ ํ”๋“ค๋ฆฐ๋‹ค


์ด ๊ฐ•์˜๋Š” ์–ด๋–ค ๊ฐ•์˜์ธ๊ฐ€์š”

Prisma API ์‚ฌ์šฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” ๊ฐ•์˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

findMany, create, update๋Š” ์ด๋ฏธ ์ž˜ ์“ฐ๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜์€ ๊ทธ๋‹ค์Œ ๋‹จ๊ณ„, ์ฆ‰ ์™œ ๊ทธ๋ ‡๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ ํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•œ ํŒ๋‹จ ๊ธฐ์ค€์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

  • schema๋ฅผ ๋ณด๊ณ  ๋ณ€๊ฒฝ ๋น„์šฉ์ด ๋ณด์ด๋Š”๊ฐ€

  • ์ด transaction์€ ์ •๋ง ํ•„์š”ํ•œ ๋ฒ”์œ„์ธ๊ฐ€

  • ์ด migration์€ ์šด์˜์—์„œ ์•ˆ์ „ํ•œ๊ฐ€

  • ์ด ์กฐํšŒ๋Š” ์ง€๊ธˆ์€ ํŽธํ•˜์ง€๋งŒ ๋‚˜์ค‘์— ๋ฌด๋„ˆ์ง€์ง€ ์•Š๋Š”๊ฐ€

์ด ์งˆ๋ฌธ๋“ค์— ์Šค์Šค๋กœ ๋‹ตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.


๋ชฉ์ฐจ

  1. ์™œ Prisma๋Š” ์‹ค๋ฌด์—์„œ ๋‹ค๋ฅด๊ฒŒ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”๊ฐ€

  2. Prisma ๋„์ž… ์ „์— ์ •ํ•ด์•ผ ํ•  ๊ฒƒ๋“ค

  3. ์Šคํ‚ค๋งˆ ์„ค๊ณ„์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ํ•˜๋Š” ์‹ค์ˆ˜

  4. Relation ๋ชจ๋ธ๋ง ์‹ค๋ฌด ํŒจํ„ด

  5. ์ƒํƒœ๊ฐ’๊ณผ ๋ผ์ดํ”„์‚ฌ์ดํด ์„ค๊ณ„

  6. NestJS์—์„œ Prisma ๊ตฌ์กฐํ™”ํ•˜๊ธฐ

  7. Transaction๊ณผ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ

  8. Migration ์šด์˜ ์‹ค๋ฌด

  9. ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ์กฐํšŒ ์ „๋žต

  10. ์‹ค๋ฌด ๊ณตํ†ต ํŒจํ„ด ๋ชจ์Œ

  11. ํ…Œ์ŠคํŠธ์™€ ์šด์˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  12. Prisma๋ฅผ ์ž˜ ์“ด๋‹ค๋Š” ๊ฒƒ์˜ ์˜๋ฏธ


์ด ๊ฐ•์˜๋ฅผ ํ•™์Šตํ•˜๊ณ  ๋‚˜๋ฉด

  • schema๋ฅผ ๋ณด๊ธฐ๋งŒ ํ•ด๋„ ํ–ฅํ›„ ๋ณ€๊ฒฝ ๋น„์šฉ์ด ์–ด๋А ์ •๋„ ๋ณด์ž…๋‹ˆ๋‹ค

  • transaction์„ ์–ด๋””์— ์“ฐ๊ณ  ์–ด๋””์—๋Š” ์•ˆ ์จ์•ผ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

  • migration์„ ๊ฐœ๋ฐœ ํŽธ์˜๊ฐ€ ์•„๋‹ˆ๋ผ ์šด์˜ ๊ด€์ ์—์„œ ์ƒ๊ฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค

  • ๋ชฉ๋ก/์ƒ์„ธ/ํ†ต๊ณ„ ์กฐํšŒ๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค

  • ํŒ€์—์„œ Prisma ์‚ฌ์šฉ ๊ธฐ์ค€์„ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • Prisma ๊ณต์‹ ๋ฌธ์„œ๋Š” ์ฝ์—ˆ์ง€๋งŒ, ์‹ค๋ฌด์—์„œ schema๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ ํ• ์ง€ ๋ง‰๋ง‰ํ•œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž

  • Prisma๋ฅผ ๋‹จ์ˆœ ๋ฌธ๋ฒ•์ด ์•„๋‹ˆ๋ผ ์‹ค๋ฌด ๊ธฐ์ค€๊ณผ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ค‘์‹ฌ์œผ๋กœ ์ •๋ฆฌํ•˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Prisma ORM ๊ธฐ์ดˆ

  • Node.js ๋ฐฑ์—”๋“œ ๊ธฐ์ดˆ

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

๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!

๋น„์Šทํ•œ ๊ฐ•์˜

๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

์–ผ๋ฆฌ๋ฒ„๋“œ ํ• ์ธ ์ค‘

โ‚ฉ5,390

30%

โ‚ฉ7,700