๐Ÿ“š Study/Spring

DAO, DTO, VO ๋ž€?

kkh1902 2022. 7. 15. 16:59
728x90
๋ฐ˜์‘ํ˜•

spring์„ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด DTO, DAO, VO์— ๋Œ€ํ•œ ์šฉ์–ด์— ๋Œ€ํ•˜์—ฌ ๋งŽ์ด ์ ‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฐœ๋…์— ๋Œ€ํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

DAO(Data Access Object)

  • DAO(Data Access Object) ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ data์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. 
  • DataBase์— ์ ‘๊ทผ ํ•˜๊ธฐ ์œ„ํ•œ ๋กœ์ง & ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

- Database ์ ‘๊ทผ์„ ์œ„ํ•œ ๊ฐ์ฒด์ด๋‹ค.

- Data ์‚ฝ์ž…(INSERT), ์ˆ˜์ •(UPDATE), ์‚ญ์ œ(DELETE), ์กฐํšŒ(SELECT)๋ฅผ ์กฐ์ž‘/์ˆ˜ํ–‰ํ•œ๋‹ค.

- ๋ณดํ†ต DB์™€ ์—ฐ๊ฒฐํ•  Connection๊นŒ์ง€ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

DTO

  • DTO(Data Transfer Object) ๋Š” ๊ณ„์ธต ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด๋กœ, DTO๋Š” ๋กœ์ง์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด(getter & setter ๋งŒ ๊ฐ€์ง„ ํด๋ž˜์Šค)์ž…๋‹ˆ๋‹ค.
  • ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ DB์— ๋„ฃ๋Š” ๊ณผ์ •์„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
    • ์œ ์ €๊ฐ€ ์ž์‹ ์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ form์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ DTO์— ๋„ฃ์–ด์„œ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
    • ํ•ด๋‹น DTO๋ฅผ ๋ฐ›์€ ์„œ๋ฒ„๊ฐ€ DAO๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘์–ด๋„ฃ์Šต๋‹ˆ๋‹ค.

 ์ผ๋ฐ˜์ ์œผ๋กœ DB(Database)์— ์ ‘๊ทผํ•œ ๋’ค ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜(SELECT) ์‚ฝ์ž…(INSERT)ํ•  ๊ฐ’๋“ค์„ ๋‹ด๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ ๋‹ค.

- ๋‹ด๊ธด ๊ฐ’๋“ค์€ ๊ณ„์ธต๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•ด ์“ฐ์ด๋Š” ์ž๋ฐ”๋นˆ์ฆˆ(beans)์ด๋‹ค. (๊ณ„์ธต์˜ ์˜ˆ : Controller, Service, View ๋“ฑ...)

- ๋ณดํ†ต ๋ฉค๋ฒ„๋ณ€์ˆ˜๋Š” DB ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๋“ค์ด๋ฉฐ, getter์™€ setter๋ฅผ ๊ฐ–๋Š”๋‹ค.

VO

  • VO(Value Object) ๊ฐ’ ์˜ค๋ธŒ์ ํŠธ๋กœ์จ ๊ฐ’์„ ์œ„ํ•ด ์“ฐ์ž…๋‹ˆ๋‹ค. read-Only ํŠน์ง•(์‚ฌ์šฉํ•˜๋Š” ๋„์ค‘์— ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ ์˜ค์ง ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ)์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • DTO์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ DTO๋Š” setter๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๊ฐ’์ด ๋ณ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•