๐Ÿ›ต ์•„์›ƒ์†Œ์‹ฑ ํ”„๋กœ์ ํŠธ - ๋ฐฐ๋‹ฌ ์–ดํ”Œ ๋งŒ๋“ค๊ธฐ โถ

ํ•˜๋ฆฌ๋น„ยท2025๋…„ 4์›” 24์ผ
0

๐Ÿ“ TIL

๋ชฉ๋ก ๋ณด๊ธฐ
11/11
post-thumbnail

๐Ÿ“– ๊ฐœ์š”

์ด๋ฒˆ ํŒ€ํ”Œ ๊ณผ์ œ์—์„œ ๋‚ด๊ฐ€ ๋งก๊ฒŒ๋œ ๋ถ€๋ถ„์€ ์ฃผ๋ฌธ/์žฅ๋ฐ”๊ตฌ๋‹ˆ
ํ•„์ˆ˜๋‹จ๊ณ„์—๋Š” ์ฃผ๋ฌธ๊นŒ์ง€ ๊ตฌํ˜„์ด๊ณ , ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋Š” ๋„์ „ ๊ณผ์ œ์ด์ง€๋งŒ
์ฒ˜์Œ๋ถ€ํ„ฐ ์šฐ๋ฆฌ๋Š” ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ๊ฐ™์ด ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„ํ–ˆ๋‹ค !


โ–ถ๏ธ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์„ค๊ณ„ ๋‚ด์šฉ ์ •๋ฆฌ

โœ”๏ธ ์ฃผ๋ฌธ

  • ๊ณ ๊ฐ์€ ๋ฉ”๋‰ด ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ์ฃผ๋ฌธํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์‚ฌ์žฅ๋‹˜์€ ์ฃผ๋ฌธ์„ ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฐฐ๋‹ฌ ์™„๋ฃŒ๊นŒ์ง€์˜ ๋ชจ๋“  ์ƒํƒœ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค
  • ์ฃผ๋ฌธ ์š”์ฒญ ๋ฐ ์ƒํƒœ ๋ณ€๊ฒฝ
    • ์ƒˆ๋กœ์šด ์ฃผ๋ฌธ์ด๊ฑฐ๋‚˜ ์ฃผ๋ฌธ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋Š” AOP๋กœ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธด๋‹ค
    • ๋กœ๊ทธ ๋‚ด์šฉ - ์š”์ฒญ ์‹œ๊ฐ,๊ฐ€๊ฒŒ id,์ฃผ๋ฌธ id
  • ์ œ์•ฝ์กฐ๊ฑด
    • ๊ฐ€๊ฒŒ์˜ ์ตœ์†Œ ์ฃผ๋ฌธ๊ธˆ์•ก์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค
    • ๊ฐ€๊ฒŒ์˜ ์˜คํ”ˆ/๋งˆ๊ฐ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ฃผ๋ฌธํ•  ์ˆ˜ ์—†๋‹ค

โœ”๏ธ ์žฅ๋ฐ”๊ตฌ๋‹ˆ

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

๐Ÿ“– ์„ค๊ณ„


1๏ธโƒฃ ์—ฐ๊ด€๊ด€๊ณ„ ์„ค์ •

โœ”๏ธ ์—ฐ๊ด€๊ด€๊ณ„ ๋น„๊ตํ•˜๊ธฐ

  • ๐Ÿ…ฐ๏ธ / ํŠœํ„ฐ๋‹˜

    User 1 : N Cart 1 : 1 Menu
    ์œ ์ €๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ Cart ํ•ญ๋ชฉ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ

    User
     โ”œโ”€ Cart1 (Menu: ์งฌ๋ฝ•, Quantity: 1)
     โ”œโ”€ Cart2 (Menu: ํƒ•์ˆ˜์œก, Quantity: 2)
     โ””โ”€ Cart3 (Menu: ๋ณถ์Œ๋ฐฅ, Quantity: 1)
    • ๊ฐ Cart๋Š” ๋ฉ”๋‰ด ํ•˜๋‚˜๋งŒ ๋‹ด๊ณ  ์žˆ์Œ , ์ˆ˜๋Ÿ‰์€ Cart์— ์ €์žฅ
    • ๋ณต์ˆ˜์˜ ๋ฉ”๋‰ด๋ฅผ ๋‹ด๊ณ  ์‹ถ์œผ๋ฉด? โ†’ Cart๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค๋ฉด ๋จ
  • ๐Ÿ…ฑ๏ธ์•ˆ / ๋‚ด๊ฐ€ ์ตœ์ดˆ ์ƒ๊ฐํ•œ ์—ฐ๊ด€๊ด€๊ณ„

    User 1 : 1 Cart 1 : N Menu
    ์œ ์ €๋Š” Cart ๋”ฑ ํ•˜๋‚˜๋งŒ ๊ฐ€์ง

    User
     โ””โ”€ Cart1
           โ”œโ”€ CartMenu (Menu: ์งฌ๋ฝ•, Quantity: 2)
           โ””โ”€ CartMenu (Menu: ํƒ•์ˆ˜์œก, Quantity: 1)
    • Cart ์•ˆ์— ๋ฉ”๋‰ด๋“ค์ด ์—ฌ๋Ÿฌ ๊ฐœ ๋‹ด๊ฒจ ์žˆ์Œ
    • "์žฅ๋ฐ”๊ตฌ๋‹ˆ ํ•˜๋‚˜ ์•ˆ์— ๋ฉ”๋‰ด๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ, ๊ฑฐ๊ธฐ์— ์ˆ˜๋Ÿ‰๊นŒ์ง€ ํฌํ•จ๋œ ํ…Œ์ด๋ธ”"์ด ๋“ค์–ด์žˆ๋Š” ๊ตฌ์กฐ

โœ”๏ธ A์•ˆ์˜ ์žฅ์ 

1. ๋ฐ์ดํ„ฐ ์ •๊ทœํ™”๊ฐ€ ๊น”๋”ํ•จ

  • Cart๊ฐ€ ๋ฉ”๋‰ด ํ•ญ๋ชฉ + ์ˆ˜๋Ÿ‰์œผ๋กœ ๋ถ„๋ฆฌ๋ผ ์žˆ์Œ
    โ†’ Cart๋งŒ ๋ณด๋ฉด ์–ด๋–ค ๋ฉ”๋‰ด๊ฐ€ ๋ช‡ ๊ฐœ ๋‹ด๊ฒผ๋Š”์ง€ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Œ
    โ†’ ๋ฉ”๋‰ด + ์ˆ˜๋Ÿ‰ ๋‹จ์œ„๋กœ ๊ณ„์‚ฐ, ์กฐํšŒ, ์‚ญ์ œ๊ฐ€ ์•„์ฃผ ํŽธํ•ด!

2. ์ฃผ๋ฌธ ์ƒ์„ฑ ๋กœ์ง์ด ๊น”๋”ํ•ด์ง

  • ์ด ๊ตฌ์กฐ์—์„  ๊ฐ™์€ ์ฃผ๋ฌธ ID๋กœ ์—ฌ๋Ÿฌ Cart๋ฅผ ๋ฌถ๊ธฐ ๋งŒ ํ•˜๋ฉด ๋
    โ†’ ์ฃผ๋ฌธ ์ƒ์„ฑ์„ ์œ„ํ•ด ๋ฉ”๋‰ด ๋ฆฌ์ŠคํŠธ ๋ถ„ํ•ด๊ฐ€ ํ•„์š” ์—†์Œ

3. ํ™•์žฅ์„ฑ์ด ์ข‹์Œ

  • ๋‚˜์ค‘์— ์˜ต์…˜, ๋ฆฌ๋ทฐ, ์ฟ ํฐ ๋“ฑ ๊ธฐ๋Šฅ ํ™•์žฅํ•  ๋•Œ๋„ ํŽธ๋ฆฌํ•  ๊ฒƒ
    โ†’ CartItem ๋‹จ์œ„๋กœ ๋ณต์žกํ•œ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

โœ”๏ธ B์•ˆ์˜ ์žฅ์ 

  1. Cart๊ฐ€ ํ•œ ์œ ์ €๋‹น 1๊ฐœ๋กœ ๊ณ ์ •๋จ
    โ†’ ๋ฉ”๋‰ด 1๊ฐœ๋งŒ ๋นผ๋ ค๋ฉด List<Menu>์—์„œ ๊บผ๋‚ด์„œ ์ˆ˜๋Ÿ‰ ๊ฐฑ์‹ ํ•˜๊ณ  ๋‹ค์‹œ ์ €์žฅํ•ด์•ผ ํ•จ

  2. Cart๊ฐ€ ๋ฉ”๋‰ด ๋ฆฌ์ŠคํŠธ๋ฅผ ์ง์ ‘ ๊ฐ–๊ณ  ์žˆ์Œ โ†’ ์ค‘๊ฐ„ ํ…Œ์ด๋ธ” ํ•„์š”
    โ†’ ๋ฉ”๋‰ด์™€ ์ˆ˜๋Ÿ‰์„ ๋”ฐ๋กœ ์ €์žฅํ•˜๋ ค๋ฉด ์ค‘๊ฐ„ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ํ•„์š”ํ•ด์ง

  3. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์—‰์ผœ๋ฒ„๋ฆด ์ˆ˜ ์žˆ์Œ
    โ†’ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ๋ฉ”๋‰ด ์ˆ˜๋Ÿ‰ ๋Š˜๋ฆฌ๊ธฐ, ์ค„์ด๊ธฐ, ์‚ญ์ œํ•˜๊ธฐ ๋ชจ๋‘ ๋ณต์žกํ•œ ๋กœ์ง์„ ์š”๊ตฌํ•จ

๐ŸŒŸ ์ดํ•ดํ•œ ๋‚ด์šฉ ์š”์•ฝ ์ •๋ฆฌ

A์•ˆ - cart1, cart2, cart3์€ ๊ฐ๊ฐ ์งฌ๋ฝ• ์นดํŠธ, ํƒ•์ˆ˜์œก ์นดํŠธ, ๋ณถ์Œ๋ฐฅ ์นดํŠธ
B์•ˆ - cart1, cart2, cart3์€ ๊ฐ๊ฐ ์ˆ˜๋ฆฐ์ด ์นดํŠธ, ๊ด‘์ˆ˜ ์นดํŠธ, ์˜์‹์ด ์นดํŠธ

์ˆ˜๋ฆฐ์ด ์นดํŠธ์— ํƒ•์ˆ˜์œก, ์งฌ๋ฝ•์„ ๋‹ด์„ ์ˆ˜๋Š” ์žˆ๋Š”๋ฐ
๊ฐ๊ฐ์˜ ์ˆ˜๋Ÿ‰์„ ์ •ํ•˜๋ ค๋ฉด ์—”ํ‹ฐํ‹ฐ๊ฐ€ ํ•˜๋‚˜ ๋” ์žˆ์–ด์„œ ๊ทธ ์—”ํ‹ฐํ‹ฐ์— (๋ฉ”๋‰ด์ด๋ฆ„,๋ฉ”๋‰ด์ˆ˜๋Ÿ‰) ์„ ๋‹ด์•„์„œ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค


โœ”๏ธ A์•ˆ์˜ Cart1,2,3์€ ๋ฉ”๋‰ด ํ•˜๋‚˜์”ฉ ๋‹ด๊ธด ๋…๋ฆฝ์ ์ธ ํ•ญ๋ชฉ
โœ”๏ธ B์•ˆ์€ Cart1์ด ์œ ์ € ์ „์ฒด ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์—ญํ• , ์•ˆ์— ๋ฉ”๋‰ด์™€ ์ˆ˜๋Ÿ‰ ๋”ฐ๋กœ ๋“ค์–ด๊ฐ€์•ผ ํ•ด์„œ ์ค‘๊ฐ„ ์—”ํ‹ฐํ‹ฐ ํ•„์š”
โœ”๏ธ ๊ทธ๋ž˜์„œ ์‹ค๋ฌด์—์„œ๋Š” A์•ˆ์„ ์“ฐ๊ณ , ํ•„์š” ์‹œ CartGroup, Order, CartItem์„ ๋ถ™์—ฌ์„œ ํ™•์žฅํ•˜๋Š” ๋ฐฉ์‹ ์‚ฌ์šฉ


2๏ธโƒฃ ์‘๋‹ต

  • ๊ฐ€๊ฒŒ์˜ ์ตœ์†Œ์ฃผ๋ฌธ๊ธˆ์•ก์„ ์ถฉ์กฑํ–ˆ์„ ๋•Œ๋งŒ ์ฃผ๋ฌธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์กฐ๊ฑด์„ ๋ณด๊ณ  ๋” ์ƒ๊ฐ์„ ํ•ด๋ณด๋‹ˆ
    ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด์„๋•Œ๋งˆ๋‹ค ํ˜„์žฌ ๊ฐ€๊ฒฉ + ์ฃผ๋ฌธ์ด ๊ฐ€๋Šฅํ•œ์ง€ ๋‚˜์™€์•ผ ํ•˜์ง€ ์•Š์„๊นŒ?

โœ”๏ธ API ๋ช…์„ธ์„œ ์ˆ˜์ •

โœ”๏ธ ์ƒํ™ฉ๋ณ„ ์‘๋‹ต Dto ์ƒ์„ฑ

โถ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ถ”๊ฐ€์‹œ

  • ๋ฐฉ๊ธˆ ์ถ”๊ฐ€ํ•œ ์นดํŠธ ( ๋ฉ”๋‰ด / ์ˆ˜๋Ÿ‰ )
  • ์œ ์ €์˜ ๋ชจ๋“  ์นดํŠธ์˜ ๋ฉ”๋‰ด ์ดํ•ฉ + ์œ ์ €์˜ ๋ชจ๋“ ์นดํŠธ ํ˜„์žฌ ๊ธˆ์•ก + ์ฃผ๋ฌธ๊ฐ€๋Šฅ์—ฌ๋ถ€

โท ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ „์ฒด ์กฐํšŒ / ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ˆ˜์ •์‹œ

  • ์œ ์ €์˜ ๋ชจ๋“ ์นดํŠธ ๋‚ด์šฉ ( ๋ฉ”๋‰ด / ์ˆ˜๋Ÿ‰ ) + ํ˜„์žฌ ๊ธˆ์•ก + ์ฃผ๋ฌธ๊ฐ€๋Šฅ์—ฌ๋ถ€

๐ŸŒŸ Dto์—์„œ ์นดํŠธ ๊ธˆ์•ก์„ ๊ตฌํ•ด์„œ ์„œ๋น„์Šค๋‹จ์˜ ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค...!


๐Ÿคฏ ๋‚˜์˜ ํšŒ๊ณ 


  • ์—ญ์‹œ ํ˜‘์—…์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์„ค๊ณ„๋ผ๋Š” ๊ฑธ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊นจ๋‹ฌ์•˜๋‹ค..^^
    ํ˜‘์—…์—์„œ ์„ค๊ณ„๋‹จ๊ณ„๊ฐ€ 70% ์ด์ƒ์ด๋ผ๋Š” ์„ฑ๊ทœํŠœํ„ฐ๋‹˜์˜ ๋ง์”€์ด ์„ค๊ณ„๋‹จ๊ณ„๊ฐ€ ๋‹ค ๋๋‚˜๊ณ  ๋‚˜๋‹ˆ ํ•œ ๋ฒˆ ๋” ์ƒ๊ฐ๋‚œ๋‹ค..!
  • dto์—์„œ ์ „๋ถ€ ๊ฐ€๊ฒฉ๊นŒ์ง€ ๊ณ„์‚ฐ์„ ํ•ด๋ฒ„๋ฆฌ๊ฒŒ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ–ˆ๋Š”๋ฐ ์ด๊ฒŒ ๋งž๋‚˜ ์‹ถ์ง€๋งŒ stream์„ ํ™œ์šฉํ•ด ๊ฐ€๊ฒฉ์„ ๋‹ค ๊ณ„์‚ฐํ•ด๋ฒ„๋ฆฌ๋‹ˆ๊นŒ ์„œ๋น„์Šค๋‹จ ์ฝ”๋“œ๊ฐ€ ํ™•์ค„์–ด์„œ ๋ฟŒ๋“ฏํ•˜๋‹ค~!
  • ์˜ค๋”๊นŒ์ง€ ์ญ‰ ๊ตฌํ˜„ํ•ด๋ณด์ž~!

0๊ฐœ์˜ ๋Œ“๊ธ€