๐Ÿต java

JAVA | DTO๋ž€

c0zi 2023. 7. 7. 14:50

DTO(Data Transfer Object)


  • ๊ณ„์ธต ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด
  • ๋กœ์ง์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด(getter & setter ๋งŒ ๊ฐ€์ง„ ํด๋ž˜์Šค)
  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ๋งŒ ์ €์žฅํ•ด์•ผ ํ•จ
  • ์šฉ๋Ÿ‰์ด ์ž‘์€ ๋‹จ์ˆœํ•œ ํ™˜๊ฒฝ์œผ๋กœ, ํ•œ ๊ฐ€์ง€ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰

 

DTO

 

  1. DB - Table - Model - DTO
  2. DTO๋ฅผ ๋งŒ๋“ค๋ฉด password๋ฅผ ๋…ธ์ถœ์‹œํ‚ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.
  3. Model๋ฅผ ๋…ธ์ถœ์‹œ์ผœ์„œ ๊ฐ’์„ ๋นผ๋ฉด ์•ˆ๋˜๋‚˜? - ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ๋…ธ์ถœ๋œ๋‹ค.
  4. DTO๋ฅผ ๊ณต์œ ํ•˜๋ฉด ์•ˆ๋˜๋‚˜?

 

๐Ÿ” ํšจ๊ณผ์ ์ธ DTO

  • ์ƒ์šฉ๊ตฌ ์ฝ”๋“œ๋ฅผ ์ตœ์†Œํ™” ⇒ ์ฝ”๋“œ๋ฅผ ์ผ์ผ์ด ์ƒˆ๋กœ ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ
  • ์ž‘์„ฑ์ด ์šฉ์ดํ•ด์•ผ ํ•จ ⇒ DTO๋Š” ์ž‘์„ฑ์ด ์–ด๋ ค์šธ ์ •๋„๋กœ ๋ณต์žกํ•ด์„œ๋Š” ์•ˆ๋จ
  • ์ฝ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ ⇒ ๋ˆ„๊ตฌ๋“ ์ง€ ์ฝ”๋“œ ๊ตฌ๋ฌธ์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋„๋ก

DTO๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 


MVC ํŒจํ„ด

 

๋‹ค์Œ๊ณผ ๊ฐ™์€ MVC ํŒจํ„ด์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ Model๊ณผ View ๋ฐ Controller ๋“ฑ ์„ธ ๊ฐ€์ง€ ์—ญํ• ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์„ ๋งํ•œ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ์ฒ˜๋ฆฌ ๋กœ์ง(Model)๊ณผ UI ์˜์—ญ(View)์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด Controller์˜ ์—ญํ• ์ด๋‹ค.

 

Controller๋Š” View๋กœ๋ถ€ํ„ฐ ๋“ค์–ด์˜จ ์‚ฌ์šฉ์ž ์š”์ฒญ์„ ํ•ด์„ํ•˜์—ฌ Model์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ Model๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ View๋กœ ์ „๋‹ฌํ•˜๋Š” ์ž‘์—… ๋“ฑ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. MVC ํŒจํ„ด์˜ ์žฅ์ ์€ Model๊ณผ View๋ฅผ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ์„œ๋กœ์˜ ์˜์กด์„ฑ์„ ๋‚ฎ์ถ”๊ณ  ๋…๋ฆฝ์ ์ธ ๊ฐœ๋ฐœ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

 

Controller๋Š” View์™€ ๋„๋ฉ”์ธ Model์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ๋ณ„๋„์˜ DTO ๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๋„๋ฉ”์ธ ๊ฐ์ฒด๋ฅผ View์— ์ง์ ‘ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฏผ๊ฐํ•œ ๋„๋ฉ”์ธ ๋ฐ์ดํ„ฐ ๋“ฑ์ด ๋…ธ์ถœ๋˜๋Š” ๊ฒฝ์šฐ ๋ณด์•ˆ ์œ„ํ—˜์ด ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ์บก์Аํ™”ํ•˜์—ฌ ๋ณดํ˜ธํ•œ๋‹ค. ๋˜ํ•œ, ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ๊ณ„์ธต๊ฐ„ ์ „์†ก์— ์‚ฌ์šฉํ•˜๋ฉด, ๋ชจ๋ธ๊ณผ ๋ทฐ๊ฐ€ ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋  ์ˆ˜ ์žˆ๋‹ค. ๋ทฐ์˜ ์š”๊ตฌ์‚ฌํ•ญ ๋ณ€ํ™”๋กœ ๋„๋ฉ”์ธ์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•  ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ธ๋ฐ DTO๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด ๊ฒฐํ•ฉ์„ ๋А์Šจํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 


๊ฒฐ๋ก 


DTO๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ณผ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š”๋ฐ, DTO๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€์ง€ ๋ชจ๋ฅด๋Š” ๋‚˜๋Š” DTO์— ๋Œ€ํ•ด์„œ ๋จผ์ € ์•Œ์•„์•ผ ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์ด ๊ธ€์„ ์ž‘์„ฑํ•˜์˜€๋Š”๋ฐ security ์ธก๋ฉด์—์„œ์˜ ์•ˆ์ •์„ฑ๊ณผ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด DTO๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ดํ•ดํ•˜์˜€๋‹ค. ๊ทธ๋ฆฌ๊ณ  MVC ๋ชจ๋ธ์—์„œ controller์™€ ๋น„์Šทํ•œ ์—ญํ• ์ธ ๋“ฏํ•œ๋ฐ ์ž˜ ์ดํ•ดํ•œ ๊ฒƒ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค ใ…Žใ…Ž


์ฐธ๊ณ ์ž๋ฃŒ


https://hudi.blog/data-transfer-object/

 

DTO์˜ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ๋ฒ”์œ„

DTO๋Š” ์šฐํ…Œ์ฝ” ๊ณผ์ • ์ค‘ ์ •๋ง ๋งŽ์ด ๋“ค์–ด๋ดค๊ณ , ๋‚˜๋ฆ„ ์‚ฌ์šฉ๋„ ๋งŽ์ด ํ–ˆ์ง€๋งŒ ์ด์ƒํ•˜๊ฒŒ ๋ฐ”๋žŒ์งํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ํ™•์‹ ์ด ๋“ค์ง€ ์•Š๋Š” ๊ฐœ๋…์ด๋‹ค. DTO์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ํ•ญ์ƒ ์ƒˆ๋กญ๊ฒŒ ์•Œ์•„๊ฐ€๋Š”๋ฐ, ์ด๋Ÿฌ๋‹ค๊ฐ„ DTO

hudi.blog

https://tecoble.techcourse.co.kr/post/2021-04-25-dto-layer-scope/

 

DTO์˜ ์‚ฌ์šฉ ๋ฒ”์œ„์— ๋Œ€ํ•˜์—ฌ

1. DTO๋ž€? DTO(Data Transfer Object)๋ž€ ๊ณ„์ธต๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด(Java Beans)์ž…๋‹ˆ๋‹ค. ๊ฐ„๋žตํ•˜๊ฒŒ DTO์˜ ๊ตฌ์ฒด์ ์ธ ์šฉ๋ก€ ๋ฐ ํ•„์š”์„ฑ์„ MVC ํŒจํ„ด์„ ํ†ตํ•ด ์•Œ์•„๋ณผ๊นŒ์š”? ๐Ÿš€ 1.1. MVC ํŒจํ„ด MVC…

tecoble.techcourse.co.kr