๋ณธ ํฌ์คํ ์ ํ๋ก๊ทธ๋๋จธ์ค ๋ฏธ๋ ๋ฐ๋ธ ์ฝ์ค๋ฅผ ๊ณต๋ถํ๋ฉฐ
ํ์ต์ ๊ธฐ๋กํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์์ฑ๋ ๊ธ์ ๋๋ค.
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ์ ์ฉ์ด๋ฅผ ํ์ตํ๋ค.
์ฌ์ฉ์๊ฐ ์ดํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉํ๋ ๋์ ์์ญ
์ฃผ๋ก ๋น์ฆ๋์ค ์์ฒด๊ฐ Domain
์ด ๋๋ค.
ex)
์ฃผ๋ฌธ๊ด๋ฆฌ ์ดํ๋ฆฌ์ผ์ด์
์ ๋๋ฉ์ธ?
์ฃผ๋ฌธ
ํ๊ณ๊ด๋ฆฌ ์ดํ๋ฆฌ์ผ์ด์
์ ๋๋ฉ์ธ?
ํ๊ณ
๋๋ฉ์ธ(๋น์ฆ๋์ค)์์ฒด๊ฐ ๋ณต์กํ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ๋ณต์ก์ฑ ํด์๋ฅผ ์ํด ๋ชจ๋ธ
์ ๋ง๋๋๋ฐ,
์ด๋ฐ ๋ชจ๋ธ๋ค์ ํํํ๊ณ ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ค์ด์ด๊ทธ๋จ์ ์ฌ์ฉํ๋ค.
์ฌ๋ฌ ๋ชจ๋ธ ์ค Entity๋ชจ๋ธ
, Value Object ๋ชจ๋ธ
์ ํ์ตํด๋ณผ ๊ฒ์ด๋ค.
DDD์ ์ฉ์ด๋ฅผ ํตํด ์ฃผ๋ฌธ๊ด๋ฆฌ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ์ํด๋ณผ ์์ ์ด๋ค.
์ง๊ธ ๋ชจ๋ธ์ ํ์ตํ๋ ๋ชฉ์ ์ JAVA ๊ธฐ๋ฐ์ ์ดํ๋ฆฌ์ผ์ด์
์ ์ ์ํ๊ธฐ ์ํจ์ด๋ฏ๋ก
๋ชจ๋ ๋ชจ๋ธ์ ํด๋์ค๋ก ์์ฑํ๊ณ ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ง๋ค. ์ข
๋ฅ๊ฐ ์๋ ๊ฐ์ฒด๋ผ๊ณ ์๊ฐํ๋ฉด ์ดํด๊ฐ ์ฌ์ธ ๊ฒ.
Entity๋ชจ๋ธ์์์ ๊ฐ์ฒด๋ Entity
์ด๊ณ
Entity
๋ ๋ค๋ฅธ Entity์ ๊ตฌ๋ณํ ์ ์๋ ์๋ณ์
๋ฅผ ๊ฐ์ง๋ค.
Entity๋ ๊ฐ์ฒด์ ์ํ๊ฐ ๊ณ์ ๋ณํ๋ค.
Entity์ ์๋ณ์
๋ ๊ณ ์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ฉ์ธ
์์ ๊ฐ๋ณ์ฑ์ด ์๋ ๊ฐ๋
์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
EX)
์ฃผ๋ฌธ๊ด๋ฆฌ ๋๋ฉ์ธ์์๋
์ฃผ๋ฌธ์ด๋ผ๋ Entity ์กด์ฌ. ๊ฐ๊ฐ์ ์ฃผ๋ฌธ์ ๋
๋ฆฝ์ ์ด๊ณ , ์ ๋ํฌํ๊ณ , ๊ฐ๋ณ์ฑ์๋ค.
๊ณ ๊ฐ์ด๋ผ๋ Entity ์กด์ฌ. ๊ณ ๊ฐ์ ๊ณ ๊ฐ์ด๋ผ๋ Entity๋ฅผ ์๋ณํ ์ ์๋ `๊ณ ๊ฐ ID`๋ฅผ ๊ฐ์ง๊ณ ์๋ค,
์ฃผ๋ฌธ๊ด๋ฆฌ ๋๋ฉ์ธ์์ ์ฃผ๋ฌธ์ ์ํ๋ ๊ณ์ ๋ณํ ์ ์๋ค.
์ํ์ด ๋ฐฐ์ก ์ค -> ๋ฐฐ์ก์๋ฃ๊ฐ ๋๋ฉด ์ฃผ๋ฌธ์ complete์ํ๋ก ๋ณํ๋ ๊ฒ์ด๋ค.
๊ณ ๊ฐ์ ํจ์ค์๋, ์ ํ๋ฒํธ ๋ฑ์ ๋ณํ ์ ์๋ ์์ฑ์ด๋ฉฐ ๊ณ ๊ฐ์ ๋ณด๋ ๊ฐ๋ณ์ ์ด๊ณ ์ง์์ ์ผ๋ก ๋ณํ๋๋ค.
Value Object๋ ๊ฐ ๊ฐ์ฒด๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
Value Objec๋ ๊ฐ ์์ฑ์ด ๊ฐ๋ณ์ ์ผ๋ก ๋ณํ์ง ์๊ณ ๊ฐ ์์ฒด๋ก ๊ณ ์ ํ ๊ฐ์ฒด๋ฅผ ๋ปํ๋ค.
์ํฐํฐ๊ฐ id
๋ก ๊ณ ์ ์ฑ์ ๊ฐ์ง๋ค๋ฉด Value๋ ๊ฐ์ ์กฐํฉ
์ผ๋ก ๊ณ ์ ์ฑ์ ๊ฐ์ง๋ค.
๊ทธ๋ฆฌ๊ณ ํ ๋ฒ ๋ง๋ค์ด์ง๋ฉด ๋ด์ฉ์ด ๋ณํ์ง ์๋๋ค.
ex) 100์์ง๋ฆฌ ๋์ ์ ๊ฐ์ฒด ์์ฒด๊ฐ ๊ณ ์ ํ๋ค.
100์ ๋์ ์ 5๊ฐ ๊ฐ์ง๊ณ ์์ผ๋ฉด 100์ ๋์ ๊ฐ์ฒด 5๊ฐ๊ฐ ๊ฐ๊ฐ ๊ณ ์ ํ ๊ฒ์ฒ๋ผ Value Object๋ ๊ณ ์ ํ๋ค.
ํ ๋ฒ 100์์ ์์ํ 100์์ด๋ค.
๋์ฒด๋ก entity
๋ค์ด ์์ฑ์ผ๋ก Value Object
๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
์ฃผ๋ฌธ ์์คํ ์์ ์ฃผ๋ฌธ์๋ ๋ณํ์ง ์๋๋ค.
์ฃผ๋ฌธ ์ํฐํฐ
๊ฐ ์ฌ๋ผ์ง๋ค๋ฉด ์ฃผ๋ฌธ ์ํฐํฐ์ ํจ๊ป ์ฃผ๋ฌธ์๋ ์ฌ๋ผ์ง ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ ์ฃผ๋ฌธ์์ ์ด๋ฆ์ด ๋ณํ๋ ๊ฒ์ ์๋๋ค.
๋ฐฐ์ก์ง์ ๋ณ๊ฒฝ์ด ์ผ์ด๋ฌ์ ๋์๋ ๋ฐฐ์ก์ง ์์ ์ฃผ์๊ฐ ๋ณํ๋ ๊ฒ์ด ์๋๋ผ
์ฃผ๋ฌธ์ ๋ฐฐ์ก์ง๋ก์ ๋ค๋ฅธ Value Object๊ฐ ๋ค์ด๊ฐ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ ๋ฐฐ์ก์ง ์์ฒด๊ฐ์ฃผ์
๋ผ๋ฉด ์ฃผ์๋ ๊ทธ ์์ฒด๋ก ๊ณ ์ ํ ๊ฒ์ด ๋๋ค.
์ฃผ๋ฌธ๋ฌผํ ์ํฐํฐ
๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ์ฃผ๋ฌธ๋ฌผํ์ ๋ชฉ๋ก์ด ์๋ค๋ฉด ๋ชฉ๋ก์ ๋ฐ๋ ์ ์์ง๋ง
ํ๋์Value Object
๋ ํ ๋ฒ ๋ง๋ค์ด์ง๋ฉด ๋ณํ์ง ์์ผ๋ฏ๋ก
์ฃผ๋ฌธ๋ฌผํ ์์ ์์ฑ์ ๋ณ๊ฒฝํ ์๋ ์๋ ๊ฒ์ด๋ค.
์ํฐํฐ๋ ๋ค๋ฅธ ์ํฐํฐ์ ๊ตฌ๋ณ ๊ฐ๋ฅํ ์๋ณ์
๋ฅผ ๊ฐ์ง๋ค.
์ํฐํฐ์ ์์ฑ๊ณผ ์ํ๋ ๊ณ์ ๋ณํํ์ง๋ง
๋ณํ์ง ์๋ ๊ณ ์ ์์ฑ์ผ๋ก VO
๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ์ดํดํ๋ค.
(๊ธํ๊ฒ ์ดํดํ๋๋ผ ํ๋ ธ์ ์ ์์ ์ถํ ๋ ํ์ต..๐ฐ)
๋ ๊ณต๋ถํ๋ฉด์ ์ฝ์ด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์ ํฌ์คํ
https://doing7.tistory.com/79