๐ฅDTO(Data transfer Object)
https://hudi.blog/data-transfer-object/
DTO๋ Data Transfer Object์ ์ฝ์๋ก ๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ ์ ์ก์ ์ํด ๋๋ฉ์ธ ๋ชจ๋ธ ๋์ ์ฌ์ฉ๋๋ ๊ฐ์ฒด์ด๋ค

์ด ๋ ๊ณ์ธต์ด๋, Presentation(View, Controller) , Business ( Service) , Persistence ( DAO, Repository )๋ฑ์ ์๋ฏธ ํ๋ค.
The difference between data transfer objects and business objects or data access objects is that a DTO does not have any behavior except for storage, retrieval, serialization and deserialization of its own data (mutators, accessors, parsers and serializers). In other words, DTOs are simple objects that should not contain any business logic but may contain serialization and deserialization mechanisms for transferring data over the wire.
DTO๋ ์์ํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ฐ์ดํฐ์ ๋ํ getter , setter๋ง์ ๊ฐ์ ธ์ผ ํ๋ค. ์ํคํผ๋์์ ๋ฐ๋ฅด๋ฉด DTO๋ ์ด๋ ํ ๋น์ง๋์ค ๋ก์ง์ ๊ฐ์ ธ์๋ ์๋๋ฉฐ, ์ ์ฅ, ๊ฒ์, ์ง๋ ฌํ, ์ญ์ง๋ ฌํ ๋ก์ง๋ง์ ๊ฐ์ ธ์ผ ํ๋ค.
์ ๋๋ก ๋ ๊ฐ์ฒด๊ฐ ์๋๋ผ ๊ทธ๋ฅ ๋ฌด๊ธฐ๋ ฅํ ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ. C/C++ ๋ฑ์์ ๊ตฌ์กฐ์ฒด(struct)๋ก ๊ตฌ๋ถํ ์ ์์ง๋ง, Java์์ ๋ถ๊ฐ๋ฅ. ์ต์ Java์์ record๋ฅผ ํ์ฉํ ์ ์์ง๋ง, ์ค๋๋ Bean ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ง์ํ์ง ์์.
๋๋ฉ์ธ ๋ชจ๋ธ ๋์ ์ฌ์ฉํ๋ฉด ์ข์ ์ด์
์ ์ฌ์ง์ ๋ณด๋ฉด, ํ์๋ก ํ๋ ๋ฐ์ดํฐ๊ฐ Album์ title๊ณผ artist์ ์ด๋ฆ ์ ๋๋ผ๋ฉด, ๊ตณ์ด Album์ ๋ชจ๋ ๋ฐ์ดํฐ ์ ๋ณด๋ Artist ์ ๋ชจ๋ ๋ฐ์ดํฐ ์ ๋ณด๋ฅผ ๋ ธ์ถ ์์ผ์ค ํ์๊ฐ ์๋ค. ์ด๋ฐ ๋ชจ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ ์์ฑ์ด ์ธ๋ถ์ ๋ ธ์ถ๋๋ฉด ๋ณด์๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๊ณ , ๋ ๊ทธ๋งํผ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ ํด์ฃผ๋ค ๋ณด๋ ํต์ ๋น์ฉ์ด ๊ทธ๋งํผ ๋ ๋ค์ด๊ฐ๋ค. ๋ํ, ๋๋ฉ์ธ ๋ชจ๋ธ์ ๊ณ์ธต๊ฐ ์ ์ก์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ธ๊ณผ ๋ทฐ๊ฐ ๊ฐํ๊ฒ ๊ฒฐํฉ๋ ์ ์๋ค. ๋ทฐ์ ์๊ตฌ์ฌํญ ๋ณํ๋ก ๋๋ฉ๋์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ข์ง ์๋ค. DTO๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ๊ฒฐํฉ์ ๋์จํ๊ฒ ๋ง๋ค ์ ์๋ค.
์ฌ์ค DTO๋ ์ํฐ ํจํด์ด๋ค.
์ฌ๊ธฐ์ ๋งํ๋ ์ํฐํจํด์ ๋ฌด๊ธฐ๋ ฅํ ๋๋ฉ์ธ ๋ชจ๋ธ ๋๋ ๋น์ฝํ ๋๋ฉ์ธ ๋ชจ๋ธ(anemic domain model)์ด๋ผ๊ณ ์ผ์ปซ๋๋ค. ์ ์ํฐํจํด์ธ์ง๋ anemic domain model ํ์ด์ง์์ ๋ค๋ฃจ๊ณ ์๋ค.
Last updated

