Value object VS Data transfer object - team-wedev/wedev GitHub Wiki
Value object
computer science ์์ Value object
๋ ๋์ผ์ฑ(equality)์ ๊ธฐ๋ฐ์ผ๋ก ํ์ง ์๋ ๋จ์ํ entity๋ฅผ ๋ํ๋
๋๋ค.
์ฆ, ๋ ๊ฐ์ value object๋ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ฉด ๊ฐ๋ค๋ผ๊ณ ํฉ๋๋ค๋ง ์ด ๋ ๊ฐ์ฒด๋ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ปํ์ง๋ ์์ต๋๋ค.
Value object๋ ๋ฐ๋์ immutable ํด์ผํฉ๋๋ค. ๋์ผํ๊ฒ ์์ฑ ๋ ๋ ๊ฐ์ value object๋ ๋์ผํ๊ฒ ์ ์ง๋์ด์ผ ํ๋ค๋ ์๋ฌต์ ์ธ ๊ณ์ฝ์ด ํ์ํฉ๋๋ค.
Data Transfer Object
์ถ์ฒ : https://martinfowler.com/eaaCatalog/dataTransferObject.html
์๊ฒฉ์ ์๋ interface๋ฅผ ํธ์ถ ํ ๋, ๊ฐ๊ฐ์ ํธ์ถ์ ๋ง์ ๋น์ฉ์ด ์์๋ฉ๋๋ค. ์ฆ, ํธ์ถ์ ๋น๋๋ฅผ ์ค์ธ๋ค๋ฉด ๋น์ฉ์ ์ค์ผ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ ๋ง์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. - ์ด๋ ์ค์ง ํ๋์ ๋งค๊ฐ๋ณ์๋ง ๋ฐํํ๊ฒ ํ๋ ์๋ฐ์ ๊ฐ์ ์ธ์ด์์๋ ๋ถ๊ฐ๋ฅ ํ ๋๊ฐ ์์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐ ํ๊ธฐ ์ํด์๋ Data Transfer Object๋ฅผ ์์ฑํด์ ์ด ๊ฐ์ฒด๊ฐ ํธ์ถ์ ๋ํด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ฒํ๋ฉด ๋ฉ๋๋ค. ์ด๋ serializable ๋์ด connection ๋๋จธ์ ์ ๋ฌ๋ฉ๋๋ค. ๋ณดํต assembler๋ server side ์์ DTO์ ์ด๋ค domain object ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
DTO๋ multiple remote call์ ํ๋์ call๋ก ์ผ๊ด์ฒ๋ฆฌ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ฒ์ด ์ฃผ์ํ ๊ธฐ๋ฅ์ด์ง๋ง, ์ ์ก๋๋ ๋ฐ์ดํฐ์ ๋ํ serialization mechanism์ ์บก์ํ ํ ์ ์๋ค๋ ๋๋ค๋ฅธ ์ฅ์ ์ด ์กด์ฌํฉ๋๋ค.