dtoVo
DTO vs VO vs Entity
๊ฐ๋ ์ ๋ฆฌ
Dto
๋ ์ด์ด ๊ฐ ๋ฐ์ดํฐ ๊ตํ์ ์ํด ์ฌ์ฉํ๋ ๊ฐ๋ณ ๊ฐ์ฒด.
Vo
์๋ฏธ ์๋ ๊ฐ์ ํํํ๋ ๋ถ๋ณ ๊ฐ์ฒด. ํต์ฌ ์ญํ ์ equals()์ hashcode()๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํด์ ๋ด๋ถ์ ์ ์ธ๋ ์์ฑ์ ๋ชจ๋ ๊ฐ๋ค์ด vo๊ฐ์ฒด๋ง๋ค ๊ฐ์ด ๊ฐ์์ผ ๊ฐ์ ๊ฐ์ฒด๋ผ๊ณ ํ๋จํ ์ ์๊ฒ ํ๋ ๊ฒ์ด๋ค.
Entity
repository์ ๋ง๋ฟ์ ์๋ ํด๋์ค, ๋ฐ์ดํฐ๋ฒ ์ด์ค-ํ ์ด๋ธ์ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ํด๋์ค์ด๋ค.
dto vs entity๋ฅผ ์ค๋ช ํด๋ณด๋ฉด, entity ํด๋์ค ์์ฒด๋ฅผ ๊ฐ์ฒด๋ก ์์ฑํด์ dto์ฒ๋ผ ์ฌ์ฉํ ์ ์์ง๋ง ์ง์ํ๋ ๊ฒ์ด ์ข๋ค.
entity๋ฅผ requeest/response๋ฅผ ์ํ ํด๋์ค๋ก ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ฌ๋ฌ ํด๋์ค์ ์ํฅ์ ์ค๋ค. entityํด๋์ค๋ ๋ง์ ์๋น์ค ํด๋์ค์ ๋น์ฆ๋์ค ๋ก์ง์ ์ค์ฌ์ ์ญํ ์ ํ๋๋ฐ response๋ฅผ ๋ฐ๊พธ๊ธฐ ์ํด์ entityํด๋์ค๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ ๋ค๋ฅธ ๋ง์ ํด๋์ค์ ์ํฅ์ ์ค ์ ์๋ค. ๋ํ entityํด๋์ค์ ์ฝ๋๊ฐ ๊ธธ์ด์ง ์ฐ๋ ค๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ entity๋ฅผ request/response๋ก ์ฌ์ฉํ๊ฒ ๋ค๋ ๊ฒ์ ddd๊ท์น์ ์ด๊ธ๋๋ค. request/response๋ view layer์ ๋ง๋ฟ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
entityํด๋์ค์๋ setter๋ฅผ ๋์ง ์๋๋ค. (setter๋ฅผ ๋ง๋ค์ง ์๋ ๊ฒ์ ์ฌ์ค dto์๋ ์ ์ฉ๋๋ค. ์ ๋์ ์ผ๋ก dto์์ setter๋ฅผ ๋ง๋ค์ง ๋ง๋ผ๋ ๊ฒ์ด ์๋๋ผ, ์ ๋ง setter๊ฐ ํ์ํ์ง์ ๋ํด์ ์ถฉ๋ถํ ๊ณ ๋ฏผ ํ ํ setter๋ฅผ ์ ์ฉ์์ผ์ผ ํ๋ค๋ ๊ฒ์ด๋ค. setter๊ฐ ์์์๋ก ๋ก์ง์ด ๊น๋ํด์ง๊ธฐ ๋๋ฌธ์ด๋ค.)
setter๋ฅผ ๋๊ฒ ๋๋ฉด ํด๋น ํด๋์ค์ ์ธ์คํด์ค ๊ฐ๋ค์ด ์ธ์ , ์ด๋ป๊ฒ ๋ณํ ์ง ํ์ ํ๋ ๊ฒ์ด ํ๋ค๊ฒ ๋๋ค. ๊ฐ ๋ณ๊ฒฝ์ด ํ์ํ๋ฉด ๋งค๊ฐ๋ณ์๊ฐ ์๋ public method๋ฅผ ๋ง๋ค์ด์ ์ ํด์ง ๊ฐ์ผ๋ก๋ง ๋ณ๊ฒฝ๊ฐ๋ฅํ๊ฒ ํ๋ค.
์ ๋ฆฌํ๋ฉด, entity์ ์์ฑ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ์์์ฑ ๋ชจ๋ธ์ ํํํ entity์ ์์์ฑ์ด ๋ชจํธํด์ง๊ธฐ ๋๋ฌธ์ entity์ ๊ฐ์ ์ ๋ฌํ๊ธฐ ์ํ dto๊ฐ์ฒด๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ๋ง๋๋ ๊ฒ์ด ์ข๋ค.
์ด๋ป๊ฒ dto,vo๋ฅผ ๊ตฌ๋ถ์ง์ด ์ฌ์ฉํด์ผ ํ๋๊ฐ?
dto, vo์ ๋ช ํํ ๊ตฌ๋ถ๋ณด๋ค๋ ํ๋ก์ ํธ ๋ด๋ถ์ ๊ท์น์ ๋ง๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ์ด๋ฅผํ ๋ฉด, kotlin์ ์ฌ์ฉํ spring bootํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ ๋ dto๋ฅผ data class๋ก ์ฌ์ฉํ๋ค๋ฉด equals()์ hashcode()๊ฐ ์๋์ผ๋ก ์ค๋ฒ๋ผ์ด๋ฉ๋์ด dto๊ฐ ๊ณง vo์ ์์ฑ์ธ 'ํ๋กํผํฐ์ ๊ฐ์ด ๊ฐ๋ค๋ฉด ๊ฐ์ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๋ค.'์ ๊ฐ์ง๊ฒ ๋๋ค.
name ํ๋กํผํฐ๋ง data class์ ์์ฑ์ ๊ฐ์ง๋ฏ๋ก age๋ toString()์์ ์ ์ธ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๊ฐ์คํ๊ณ , ์ค์ ํฌ์ธํธ๋ dto, vo๋ ๋ชจ๋ ํจ๊ณผ์ ์ธ ๋ฐ์ดํฐ ์ ๋ฌ์ ์ํด์ ์ฌ์ฉํ๋ ๊ฐ๋ ์ด๋ฏ๋ก ํจ๊ณผ์ ์ธ ๋ฐ์ดํฐ ์ ๋ฌ์ ์ค์ ์ ๋๊ณ ์ดํดํด์ผ ํ๊ณ , strictํ ๊ฐ๋ ๊ตฌ๋ถ์๋ ๋๋ฌด ์ฝ๋งค์ด์ง ๋ง๋๋ก ํ๋ ๊ฒ์ด๋ค.
Last updated