๐Ÿ’ป Programming/Spring

[Spring] DDD ์„ค๊ณ„์™€ SQL ์ค‘์‹ฌ ์„ค๊ณ„

soozkim 2023. 11. 12. 20:47
13๋ฒˆ์งธ ๊ณผ์ œ

 

DDD (Domain Driven Design) ์„ค๊ณ„

๊ฐœ๋…

DDD ์„ค๊ณ„๋ž€ ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์„ค๊ณ„์—์„œ ๋ฒ—์–ด๋‚˜ ๋„๋ฉ”์ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•œ๋‹ค.

๋ฐฐ๋‹ฌ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด, ์Œ์‹, ํšŒ์›, ์ฃผ๋ฌธ ๋“ฑ์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์„ ๋‚˜๋ˆ„์–ด ์„ค๊ณ„๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์Œ์‹์„ ์ƒ์œ„ ๋„๋ฉ”์ธ์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์Œ์‹์˜ ์ด๋ฆ„, ๊ฐ€๊ฒฉ, ์˜ต์…˜ ๋“ฑ์€ ํ•˜์œ„ ๋„๋ฉ”์ธ์œผ๋กœ ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์„ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด๊ณ  ์ดํ•ด๋ฅผ ํ•˜๋ฉฐ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด DDD ์„ค๊ณ„์ด๋‹ค.

ํŠน์ง•

  • ๋„๋ฉ”์ธ ๋ชจ๋ธ๊ณผ ๋กœ์ง์— ์ดˆ์ ์„ ๋‘”๋‹ค.
  • ๋†’์€ ์‘์ง‘๋„์™€ ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„๋ฅผ ์ง€ํ–ฅํ•˜๋ฏ€๋กœ ์œ ์ง€๋ณด์ˆ˜์™€ ํ™•์žฅ์„ฑ์ด ์šฉ์ดํ•˜๋‹ค
  • ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ณต์žก์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค

 

SQL ์ค‘์‹ฌ ์„ค๊ณ„

๊ฐœ๋…

SQL ์ค‘์‹ฌ ์„ค๊ณ„๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ์™€ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ค‘์‹ฌ์œผ๋กœ ํ•˜๋Š” ์„ค๊ณ„ ๋ฐฉ์‹์„ ์˜๋ฏธํ•œ๋‹ค.

๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜๋Š” ์ ˆ์ฐจ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์„ ๋”ฐ๋ฅด๋ฏ€๋กœ ๊ฐ์ฒด ์ง€ํ–ฅ ๋ฐฉ์‹๊ณผ๋Š” ํŒจ๋Ÿฌ๋‹ค์ž„์ด ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํŠน์ง•

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘์‹ฌ์˜ ์„ค๊ณ„์ด๋ฏ€๋กœ DB์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ƒ๊ธฐ๋ฉด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์„ ์ค€๋‹ค
  • ๋†’์€ ๊ฒฐํ•ฉ๋„์™€ ๋‚ฎ์€ ์‘์ง‘๋„๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ์œ ์ง€๋ณด์ˆ˜์— ์šฉ์ดํ•˜์ง€ ์•Š๋‹ค
  • ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ ์œ ์ง€
  • ์บก์Аํ™” ์œ„๋ฐ˜

DDD ์„ค๊ณ„์™€ SQL ์ค‘์‹ฌ์˜ ์ฐจ์ด์ 

  DDD ์„ค๊ณ„ SQL ์ค‘์‹ฌ ์„ค๊ณ„
๊ฐœ๋… ๋„๋ฉ”์ธ ์ค‘์‹ฌ ์„ค๊ณ„ (๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ค‘์‹ฌ) ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์„ค๊ณ„
์‚ฌ์šฉ ๋ฒ”์œ„ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉ
๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ ๋„๋ฉ”์ธ ๋ชจ๋ธ ์ฟผ๋ฆฌ 
๊ฒฐํ•ฉ๋„ ๋‚ฎ์Œ ๋†’์Œ

 

์ฐธ๊ณ 

 

DDD(Domain Driven Design) - Incheol's TECH BLOG

์ด๋ฒคํŠธ ์†Œ์‹ฑ๊ณผ ํ•ญ์ƒ ํ•จ๊ป˜ ์•Œ์•„๋‘์–ด์•ผ ํ•  ๊ฐœ๋…์œผ๋กœ CQRS๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๋ฉด ์ปค๋งจ๋“œ์™€ ์ฟผ๋ฆฌ์˜ ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•˜์ž๋Š” ๊ฒƒ์ด๋‹ค. ์ปค๋งจ๋“œ๋Š” ์ผ๋ฐ˜์ ์ธ ๋””๋น„ ๊ธฐ์ค€์œผ๋กœ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” C,U,D์™€ ๊ฐ™์€ ๋ฉ”

incheol-jung.gitbook.io

 

 

SQL ์ค‘์‹ฌ์ ์ธ ๊ฐœ๋ฐœ์˜ ๋ฌธ์ œ์ 

์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค ๋ฐฑ์—”๋“œ ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋ฉฐ '์ด๊ฑด ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์„ค๊ณ„๊ฐ€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์€๋ฐ?' ๋ผ๋Š” ์ƒ๊ฐ์„ ์ž์ฃผ ํ•ด์™”๋‹ค. Repository ์™€ DAO ๋ฅผ ํ†ตํ•ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด

hudi.blog

 

728x90