๐Ÿ“Œ DTO์™€ VO


DTO

  • Data Transfer Object (๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ์ฒด)
  • ๊ณ„์ธต ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด
  • ๋กœ์ง์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์€ ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐ”๊ตฌ๋‹ˆ
  • getter/setter ๋ฉ”์„œ๋“œ๋งŒ์„ ๊ฐ€์ง

VO

  • value Object (๊ฐ’ ๊ฐ์ฒด)
  • ๊ฐ’ ๊ทธ ์ž์ฒด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ์ฒด
  • ์„œ๋กœ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๊ฐ€์ง„ VO์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ชจ๋“  ์†์„ฑ ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ๊ฐ™์€ ๊ฐ์ฒด
  • equals / hashCode๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•„์ˆ˜
  • ๊ฐ์ฒด์˜ ๋ถˆ๋ณ€์„ฑ์„ ๋ณด์žฅ
  • ๋กœ์ง์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ

DTO VS VO

์›น ๊ฐœ๋ฐœ์—์„œ ์‚ฌ์šฉํ•˜๋Š” VO๋Š” ์‚ฌ์‹ค DTO์ด๋‹ค.
ํ˜ผ๋™์˜ ์›์ธ์€..?

์ด ์ฑ…์—์„œ getter์™€ setter๊ฐ€ ์žˆ๊ณ , ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด๋Š” VO๋ผ๊ณ  ์ •์˜ํ•ด๋ฒ„๋ ธ๋‹ค.
(ํ›„์—๋Š” ๋ณ€๊ฒฝ๋˜์—ˆ๊ธดํ–ˆ์ง€๋งŒ)

DTO๋ฅผ VO์ฒ˜๋Ÿผ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ ?

DTO๊ฐ€ ์ „์†กํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก ๊ณผ์ • ์ค‘ ๋ณ€์กฐ๋˜์ง€ ์•Š์Œ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Œ


Entity

  • ์‹ค์ œ DB์˜ ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘๋˜๋Š” ํด๋ž˜์Šค
  • id๋กœ ๊ตฌ๋ถ„
  • ๋กœ์ง์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ

Entity๋ฅผ DTO๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ?

์‚ฌ์šฉํ• ์ˆ˜๋Š” ์žˆ์ง€๋งŒ,
View์—์„œ ํ‘œํ˜„ํ•˜๋Š” ์†์„ฑ๊ฐ’๋“ค์ด ์š”์ฒญ์— ๋”ฐ๋ผ ๊ณ„์† ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š”๋ฐ,
๊ทธ ๋•Œ๋งˆ๋‹ค Entity์˜ ์†์„ฑ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์˜์†์„ฑ ๋ชจ๋ธ์„ ํ‘œํ˜„ํ•œ Entity์˜ ์ˆœ์ˆ˜์„ฑ์ด ๋ชจํ˜ธํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— Controller์— ์“ธ DTO์™€ Entity ํด๋ž˜์Šค๋Š” ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.


์ •๋ฆฌ

ย  DTO VO Entity
์šฉ๋„ ๋ ˆ์ด์–ด ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „์†ก ์˜๋ฏธ ์žˆ๋Š” ๊ฐ’์„ ํ‘œํ˜„ DB ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘๋˜๋Š” ํด๋ž˜์Šค
๊ฐ€๋ณ€ / ๋ถˆ๋ณ€ ๊ฐ€๋ณ€ ๊ฐ์ฒด ๋ถˆ๋ณ€ ๊ฐ์ฒด ๊ฐ€๋ณ€ ๊ฐ์ฒด
๋กœ์ง ํฌํ•จ ์—ฌ๋ถ€ ๋กœ์ง์„ ํฌํ•จํ•  ์ˆ˜ ์—†์Œ ๋กœ์ง์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ` ๋กœ์ง์„ ํฌํ•จํ•  ์ˆ˜ ์—†์Œ

์ถ”๊ฐ€ - DTO๋ฅผ ์–ด๋”” ๊ณ„์ธต๊นŒ์ง€ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํ• ๊นŒ

์„œ๋น„์Šค ๋ ˆ์ด์–ด๊ฐ€ ๊ฐ€์žฅ ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค

Service ๋ ˆ์ด์–ด์˜ ์ •์˜

  • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ๊ณ„๋ฅผ ์ •์˜ํ•˜๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋“ฑ ๋„๋ฉ”์ธ์„ ์บก์Šํ™”ํ•˜๋Š” ์—ญํ• 
  • ์ฆ‰ ๋„๋ฉ”์ธ์„ ๋ณดํ˜ธ
  • ๋„๋ฉ”์ธ์„ ํ‘œํ˜„ ๊ณ„์ธต์—์„œ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๊ฒฐํ•ฉ๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜์—ฌ ๋„๋ฉ”์ธ ๋ณ€๊ฒฝ์ด Controller์˜ ๋ณ€๊ฒฝ์„ ์ด‰๋ฐœํ•œ๋‹ค.
  • ์ด๋Š” ์œ ์ง€๋ณด์ˆ˜์˜ ๋ฌธ์ œ๋กœ๋„ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

Controller๊ฐ€ DTO๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ

  • Controller๊ฐ€ DTO๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๋„๋ฉ”์ธ์—์„œ ๊ฐ์ฒด๋กœ ๊ตฌ์„ฑํ•œ ๋’ค ์„œ๋น„์Šค์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๋ ค๋ฉด ๋ณต์žกํ•œ ๊ฒฝ์šฐ Controller๊ฐ€ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋‚˜ Repository์— ์˜์กดํ•˜๊ฒŒ ๋œ๋‹ค.
  • Controller๊ฐ€ ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ ๊ฐ์ฒด๋“ค์˜ ์ •๋ณด๋ฅผ ์กฐํ•ฉํ•ด์„œ DTO๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ๊ฒฐ๊ตญ Service ๋กœ์ง์ด Controller์— ํฌํ•จ๋˜๊ฒŒ ๋œ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ