๋„๋ฉ”์ธ ๋ชจ๋ธ ์‹œ์ž‘

  • ๋„๋ฉ”์ธ ๋ชจ๋ธ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋„๋ฉ”์ธ ์ž์ฒด๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋… ๋ชจ๋ธ
  • ๊ฐœ๋… ๋ชจ๋ธ๊ณผ ๊ตฌํ˜„ ๋ชจ๋ธ์€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒƒ์ด์ง€๋งŒ ๊ตฌํ˜„ ๋ชจ๋ธ์ด ๊ฐœ๋… ๋ชจ๋ธ์„ ์ตœ๋Œ€ํ•œ ๋”ฐ๋ฅด๋„๋ก ํ•  ์ˆ˜๋Š” ์žˆ๋‹ค.
  • ํŠน์ • ๋„๋ฉ”์ธ์„ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ผ๊ณ  ํ•ด์„œ ๋„๋ฉ”์ธ์ด ์ œ๊ณตํ•ด์•ผ ํ•  ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

๋„๋ฉ”์ธ ๋ชจ๋ธ

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

๋„๋ฉ”์ธ ๋ชจ๋ธ ํŒจํ„ด

์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค

  • ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

์‘์šฉ

  • ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•œ๋‹ค. ๋„๋ฉ”์ธ ๊ณ„์ธต์„ ์กฐํ•ฉํ•ด์„œ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•œ๋‹ค.

๋„๋ฉ”์ธ

  • ์‹œ์Šคํ…œ์ด ์ œ๊ณตํ•  ๋„๋ฉ”์ธ์˜ ๊ทœ์น™์„ ๊ตฌํ˜„ํ•œ๋‹ค.

Infrastructure

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ์˜ ์—ฐ๋™์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๊ตฌํ˜„ํ•œ ์ฝ”๋“œ๋Š” ๋„๋ฉ”์ธ ๋ชจ๋ธ์—๋งŒ ์œ„์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทœ์น™์ด ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ๊ทœ์น™์„ ํ™•์žฅํ•ด์•ผ ํ•  ๋•Œ ๋‹ค๋ฅธ ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ๋œ ์ฃผ๊ณ  ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ๋ชจ๋ธ์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๊ฐœ๋… ๋ชจ๋ธ๊ณผ ๊ตฌํ˜„ ๋ชจ๋ธ

  • ๊ฐœ๋… ๋ชจ๋ธ์€ ์ˆœ์ˆ˜ํ•˜๊ฒŒ ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•œ ๋‚ด์šฉ.
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ, ์„ฑ๋Šฅ, ๊ตฌํ˜„ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ „๋ฐ˜์ ์ธ ๊ฐœ์š”๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์œผ๋กœ ๊ฐœ๋… ๋ชจ๋ธ ์ž‘์„ฑ
    • ์ „์ฒด ์œค๊ณฝ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์ง‘์ค‘.
    • ๊ตฌํ˜„ ๋ชจ๋ธ๋กœ ์ ์ง„์ ์œผ๋กœ ๋ฐœ์ „์‹œ์ผœ ๋‚˜๊ฐ€์•ผ ํ•œ๋‹ค.

๋„๋ฉ”์ธ ๋ชจ๋ธ ๋„์ถœ

  • ์š”๊ตฌ์‚ฌํ•ญ์€ ์–ธ์ œ๋‚˜ ๋ฐ”๋€” ์ˆ˜ ์žˆ๊ณ  ์–ธ์ œ๋“ ์ง€ Naming๋„ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค.
  • ๋ชจ๋ธ์„ ๊ณต์œ ํ•  ๋•Œ๋Š” ํ™”์ดํŠธ๋ณด๋“œ๋‚˜ ์œ„ํ‚ค์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ฉด ์ข‹๋‹ค.

Entity & Value

Entity

  • ์‹๋ณ„์ž๋ฅผ ๊ฐ–๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค๋ฉด ์‚ฌ๋žŒ์˜ ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋Š” ํ•˜๋‚˜์˜ ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ๋žŒ์€ Entity๊ฐ€ ๋˜๋ฉฐ ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋ผ๋Š” ์†์„ฑ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

Value

  • ๊ฐœ๋…์ ์œผ๋กœ ์™„์ „ํ•œ ํ•˜๋‚˜๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • Value Type์„ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ๋ณ€๊ฒฝํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๋Š” ์ƒˆ๋กœ์šด Value Object๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์„ ์„ ํ˜ธ.
    • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ immutableํ•œ ์„ฑ๊ฒฉ์„ ๊ฐ€์ง„๋‹ค.
    • ์•ˆ์ „ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ .

๋„๋ฉ”์ธ ๋ชจ๋ธ์— set Method ๋„ฃ์ง€ ์•Š๊ธฐ

  • get/set Method๋Š” ์Šต๊ด€์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” Method.
  • ํŠนํžˆ set Method๋Š” ๋„๋ฉ”์ธ์˜ ํ•ต์‹ฌ ๊ฐœ๋…์ด๋‚˜ ์˜๋„๋ฅผ ์ฝ”๋“œ์—์„œ ์‚ฌ๋ผ์ง€๊ฒŒ ํ•œ๋‹ค.
    • set ๋ณด๋‹ค๋Š” ์˜๋„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๋Š” ์—ฐ์Šต์„ ํ•˜์ž.
    • ์–ด๋– ํ•œ ์ด์œ ๋กœ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ์–ด์•ผ ํ•˜๋Š”์ง€?

DTO

  • Data Transfer Object
    • Presentation๊ณผ Domain Layer์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋กœ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ผ์ข…์˜ ๊ตฌ์กฐ์ฒด
    • ์ตœ๊ทผ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” set Method ๋Œ€์‹ ์— ๋„๋ฉ”์ธ ๊ธฐ๋Šฅ์„ ์ตœ๋Œ€ํ•œ ๊ตฌํ˜„ํ•˜์ž.

๋„๋ฉ”์ธ ์šฉ์–ด

  • ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋„๋ฉ”์ธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด๋Š” ๋งค์šฐ ์ค‘์š”.
  • ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์ดํ•ดํ•˜๋Š” ์‹œ๊ฐ„๋„ ์ ˆ์•ฝํ•œ๋‹ค.
  • ๋„๋ฉ”์ธ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ตœ๋Œ€ํ•œ ๋„๋ฉ”์ธ ๊ทœ์น™์„ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ๋ฒ„๊ทธ๋„ ์ค„์ด๊ฒŒ ๋œ๋‹ค.