DTO(Data Transfer Object)
- ๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ ๊ตํ์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฐ์ฒด
- ๋ก์ง์ ๊ฐ์ง์ง ์๋ ์์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด(getter & setter ๋ง ๊ฐ์ง ํด๋์ค)
- ๋น์ฆ๋์ค ๋ก์ง์ด ์๋ ๋ฐ์ดํฐ๋ง ์ ์ฅํด์ผ ํจ
- ์ฉ๋์ด ์์ ๋จ์ํ ํ๊ฒฝ์ผ๋ก, ํ ๊ฐ์ง ์์ ๋ง ์ํ

- DB - Table - Model - DTO
- DTO๋ฅผ ๋ง๋ค๋ฉด password๋ฅผ ๋ ธ์ถ์ํค์ง ์์ ์ ์๋ค.
- Model๋ฅผ ๋ ธ์ถ์์ผ์ ๊ฐ์ ๋นผ๋ฉด ์๋๋? - ํ ์ด๋ธ ๊ตฌ์กฐ๊ฐ ๋ ธ์ถ๋๋ค.
- DTO๋ฅผ ๊ณต์ ํ๋ฉด ์๋๋?
๐ ํจ๊ณผ์ ์ธ DTO
- ์์ฉ๊ตฌ ์ฝ๋๋ฅผ ์ต์ํ โ ์ฝ๋๋ฅผ ์ผ์ผ์ด ์๋ก ์์ฑํ๊ธฐ ๋๋ฌธ
- ์์ฑ์ด ์ฉ์ดํด์ผ ํจ โ DTO๋ ์์ฑ์ด ์ด๋ ค์ธ ์ ๋๋ก ๋ณต์กํด์๋ ์๋จ
- ์ฝ์ ์ ์์ด์ผ ํจ โ ๋๊ตฌ๋ ์ง ์ฝ๋ ๊ตฌ๋ฌธ์ ๋ถ์ํ ์ ์๋๋ก
DTO๋ฅผ ์ฌ์ฉํ๋ ์ด์

๋ค์๊ณผ ๊ฐ์ 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
'๐ต java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA | JPA Repository์ ์ฌ์ฉ๋ฒ๊ณผ ๋ฉ์๋ (0) | 2023.07.14 |
---|---|
JAVA | JPA ์์๋ณด๊ธฐ (JPA, JDBC, Hibernate & JPA) (0) | 2023.07.10 |
JAVA | ๋ฆฌํ๋ ์ (Reflection) ์๊ธฐ (3) | 2023.07.05 |
JAVA | enum (0) | 2023.06.13 |
JAVA | List, ArrayList์ ์ฌ์ฉ (0) | 2023.06.06 |
DTO(Data Transfer Object)
- ๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ ๊ตํ์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฐ์ฒด
- ๋ก์ง์ ๊ฐ์ง์ง ์๋ ์์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด(getter & setter ๋ง ๊ฐ์ง ํด๋์ค)
- ๋น์ฆ๋์ค ๋ก์ง์ด ์๋ ๋ฐ์ดํฐ๋ง ์ ์ฅํด์ผ ํจ
- ์ฉ๋์ด ์์ ๋จ์ํ ํ๊ฒฝ์ผ๋ก, ํ ๊ฐ์ง ์์ ๋ง ์ํ

- DB - Table - Model - DTO
- DTO๋ฅผ ๋ง๋ค๋ฉด password๋ฅผ ๋ ธ์ถ์ํค์ง ์์ ์ ์๋ค.
- Model๋ฅผ ๋ ธ์ถ์์ผ์ ๊ฐ์ ๋นผ๋ฉด ์๋๋? - ํ ์ด๋ธ ๊ตฌ์กฐ๊ฐ ๋ ธ์ถ๋๋ค.
- DTO๋ฅผ ๊ณต์ ํ๋ฉด ์๋๋?
๐ ํจ๊ณผ์ ์ธ DTO
- ์์ฉ๊ตฌ ์ฝ๋๋ฅผ ์ต์ํ โ ์ฝ๋๋ฅผ ์ผ์ผ์ด ์๋ก ์์ฑํ๊ธฐ ๋๋ฌธ
- ์์ฑ์ด ์ฉ์ดํด์ผ ํจ โ DTO๋ ์์ฑ์ด ์ด๋ ค์ธ ์ ๋๋ก ๋ณต์กํด์๋ ์๋จ
- ์ฝ์ ์ ์์ด์ผ ํจ โ ๋๊ตฌ๋ ์ง ์ฝ๋ ๊ตฌ๋ฌธ์ ๋ถ์ํ ์ ์๋๋ก
DTO๋ฅผ ์ฌ์ฉํ๋ ์ด์

๋ค์๊ณผ ๊ฐ์ 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
'๐ต java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA | JPA Repository์ ์ฌ์ฉ๋ฒ๊ณผ ๋ฉ์๋ (0) | 2023.07.14 |
---|---|
JAVA | JPA ์์๋ณด๊ธฐ (JPA, JDBC, Hibernate & JPA) (0) | 2023.07.10 |
JAVA | ๋ฆฌํ๋ ์ (Reflection) ์๊ธฐ (3) | 2023.07.05 |
JAVA | enum (0) | 2023.06.13 |
JAVA | List, ArrayList์ ์ฌ์ฉ (0) | 2023.06.06 |