๋๋ฉ์ธ ๋ชจ๋ธ ์์
- ๋๋ฉ์ธ ๋ชจ๋ธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ฉ์ธ ์์ฒด๋ฅผ ์ดํดํ๊ธฐ ์ํ ๊ฐ๋ ๋ชจ๋ธ
- ๊ฐ๋ ๋ชจ๋ธ๊ณผ ๊ตฌํ ๋ชจ๋ธ์ ์๋ก ๋ค๋ฅธ ๊ฒ์ด์ง๋ง ๊ตฌํ ๋ชจ๋ธ์ด ๊ฐ๋ ๋ชจ๋ธ์ ์ต๋ํ ๋ฐ๋ฅด๋๋ก ํ ์๋ ์๋ค.
- ํน์ ๋๋ฉ์ธ์ ์ํ ์ํํธ์จ์ด๋ผ๊ณ ํด์ ๋๋ฉ์ธ์ด ์ ๊ณตํด์ผ ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ฒ์ ์๋๋ค.
๋๋ฉ์ธ ๋ชจ๋ธ
- ๋๋ฉ์ธ ๋ชจ๋ธ์ ํํํ ๋ ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ด๋ ์ํ ๋ค์ด์ด๊ทธ๋จ๊ณผ ๊ฐ์ 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 ๋์ ์ ๋๋ฉ์ธ ๊ธฐ๋ฅ์ ์ต๋ํ ๊ตฌํํ์.
๋๋ฉ์ธ ์ฉ์ด
- ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋๋ฉ์ธ์์ ์ฌ์ฉํ๋ ์ฉ์ด๋ ๋งค์ฐ ์ค์.
- ์ฝ๋๋ฅผ ๋ถ์ํ๊ณ ์ดํดํ๋ ์๊ฐ๋ ์ ์ฝํ๋ค.
- ๋๋ฉ์ธ ์ฉ์ด๋ฅผ ์ฌ์ฉํด์ ์ต๋ํ ๋๋ฉ์ธ ๊ท์น์ ์ฝ๋๋ก ์์ฑํ๊ฒ ๋๋ฏ๋ก ๋ฒ๊ทธ๋ ์ค์ด๊ฒ ๋๋ค.