DTO vs VO
Last updated
DTO, VO๋ฅผ ํผ๋ํด์ ์ฐ๊ฒ ๋ ์์ธ์ core J2EE ๊ด๋ จ ์ฑ ์์ VO๋ผ๊ณ ํ๋ค๊ฐ TO๋ก ์ ์ ํ๊ฒ ๋จ. ์ดํ D ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฌ DTO๋ผ๊ณ ์นญํ๊ฒ ๋จ
DTO : ๋ฐ์ดํฐ ์ ๋ฌ์ฉ, VO : ๊ฐ ์์ฒด ํํ์ฉ
DTO - Data Transfer Object
๊ณ์ธต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฐ์ฒด ex) Controller โ Service ๋ ์ด์ด ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ
์ค์ง getter, setter๋ง ๊ฐ์ง๊ณ ๋ค๋ฅธ ๋ก์ง์ ๊ฐ์ง ์๋๋ค.
setter๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์์ฑ์๋ก ๊ฐ์ฒด ์ด๊ธฐํ๋ฅผ ๊ฐ์ ํ๋ฉด ์ ๋ฌ ๊ณผ์ ์ค์์์ ๋ฐ์ดํฐ ๋ถ๋ณ์ฑ์ ๋ณด์ฅํ ์ ์์ด์ ๋์ฑ ์์ ์ ์ด๋ค. (setter ์กด์ฌ ์์๋ ๊ฐ๋ณ์ , ์์ผ๋ฉด ๋ถ๋ณ)
์์ฑ๊ฐ์ด ๋ชจ๋ ๊ฐ๋ค๊ณ ํด์ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์๋๋ค
Entity ํด๋์ค
๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋งคํ๋์ด ์๋ ํต์ฌ์ ์ธ ํด๋์ค. ์ด ํด๋์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์ด๋ธ์ด ์์ฑ๋๊ณ ์คํค๋ง๊ฐ ๋ณ๊ฒฝ๋จ.
๋ง์ฝ ์ด๋ฅผ ์ด์ฉํด์ ์์ฒญ, ์๋ต๊ฐ์ ์ ๋ฌํ๋ ํด๋์ค๋ก ์ด์ฉํ๊ฒ ๋๋ฉด ๋ทฐ๊ฐ ์์ ๋ ๋๋ง๋ค ์ํฐํฐ ํด๋์ค๋ ๋ณ๊ฒฝํด์ผ๋จ. ์ํฐํฐ์ ์ฐ๊ด๋ ๋ค๋ฅธ ๊ธฐ๋ฅ๋ค์ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ฏ๋ก ๋์ DTO๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
์๋ต๊ฐ์ผ๋ก ์ฌ๋ฌ ํ ์ด๋ธ์ ์กฐ์ธํ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ํฐํฐ ํด๋์ค์ ๋ทฐ ๊ฒฐ๊ณผ๊ฐ์ด ๋ด๊ธด DTO๋ฅผ ๋ถ๋ฆฌํด์ ์ฌ์ฉํด์ผ ํ๋ค.
VO - Value Object
๊ฐ ๊ทธ ์์ฒด๋ฅผ ํํํ๋ ๊ฐ์ฒด ex) ๋ ์งํ์๋ ๊ฐ๊ฐ์ ๊ณ ์ ๋ฒํธ๊ฐ ์์ง๋ง ๊ฐ์ ๊ฐ์น๋ฅผ ๊ฐ์ง๊ณ ๊ฐ์ผ๋ก๋ง ๋น๊ต๋๋ค. (๊ฐ์ฒด์ hashcode๊ฐ ๋ค๋ฅด์ง๋ง, ๋ด๋ถ์ ๋ค์ด์๋ ํ๋๊ฐ์ ๊ฐ์ ์ ์๋ค)
์์ฑ๊ฐ์ด ๋ชจ๋ ๊ฐ์ผ๋ฉด ๊ฐ์ ๊ฐ์ฒด์ด๋ค.
HashXXX(HashSet, HashMap, Hashtable)์ ๋๋ฑ๋น๊ต ๋ฐฉ์
hashCode() ๊ฐ๊ณผ equals() ๊ฐ์ด ๋ชจ๋ ๊ฐ์์ผ ๋๋ฑ ๊ฐ์ฒด์ด๋ฏ๋ก ์์ ํ VO๋ก ๋ง๋ค๊ธฐ ์ํด์๋ ๊ฐ์ฒด๋ฅผ ์์ฑ๊ฐ์ผ๋ก๋ง ๋น๊ตํ๋๋ก equals(), hashCode()๋ฅผ ๋ชจ๋ ์ค๋ฒ๋ผ์ด๋ฉ ํด์ค์ผ ํ๋ค.
[10๋ถ ํ ์ฝํก] ๐์ธ๋น์ DTO vs VO