1. DAO(Data Access Object)
์ค์ ๋ก DB์ data์ ์ ๊ทผํ๊ธฐ ์ํ ๊ฐ์ฒด. DB๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์กฐํ ๋ฐ ์กฐ์ํ๋ ๊ธฐ๋ฅ์ ์ ๋ดํ๋ object.
- ์ค์ ๋ก DB์ ์ ๊ทผํ์ฌ data๋ฅผ ์ฝ์ , ์ญ์ , ์กฐํ, ์์ ๋ฑ CRUD ๊ธฐ๋ฅ์ ์ํํ๋ค.
- Service ๋จ๊ณผ DB ๋จ์ ์ฐ๊ฒฐํ๋ ๊ณ ๋ฆฌ ์ญํ
2. DTO(Data Transfer Object)
๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฐ์ฒด, ๋ก์ง์ ๊ฐ์ง์ง ์๋ ์์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด(Java Beans).
VO์ ํผ์ฉํ์ฌ ์ฌ์ฉํ๋ฉฐ, ์์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด.
- DTO๋ ์ฆ, getter/setter ๋ฉ์๋๋ง ๊ฐ์ง ํด๋์ค๋ฅผ ์๋ฏธํจ
- DB์์ ๋ฐ์ดํฐ๋ฅผ ์ป์ด์ Service๋จ์ด๋ Controller ๋จ ๋ฑ์ผ๋ก ๋ณด๋ผ ๋ ์ฌ์ฉ
3. VO(Value Object)
๊ฐ์ ์ํด ์ฐ์ด๋ฉฐ, Read-Only์ ํน์ง์ ๊ฐ์ง.
- DTO์์ ์ฐจ์ด : DTO๋ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ธต ๊ฐ ๊ตํ(Transfer) ํ๋๋ฐ์ ์๋ฏธ๊ฐ ์๊ณ , VO๋ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ read-only ์์ฑ์ ๊ฐ์ง ๊ฐ์ฒด๋ก์ ๋ฐ์ดํฐ ๊ทธ ์์ฒด์ ์๋ฏธ๋ฅผ ๋๊ณ ์์. (VO๋ Setter๊ฐ ์์)
- domain =/= VO ์ด๋ฉฐ, ์ฐ๊ด์ฑ์ ๋ฐ์ง์๋ฉด domain = entity + VO์ ๋ชจ์
์ ์ ๊ฐ ์ ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ DB์ ๋ฃ๋ ๊ณผ์ ?
1) ์ ์ ๊ฐ ์์ ์ ๋ธ๋ผ์ฐ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ์ฌ form์ ์๋ ๋ฐ์ดํฐ๋ฅผ DTO์ ๋ฃ์ด์ ์ ์ก
2) ํด๋น DTO๋ฅผ ๋ฐ์ ์๋ฒ๊ฐ DAO๋ฅผ ์ด์ฉํด DB๋ก ๋ฐ์ดํฐ๋ฅผ ์ง์ด๋ฃ์
์ธ์ ๋ญ ์จ์ผ ํ๋๊ฐ
DTO : ๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ์ฉ
VO : ๊ฐ์ ๊ฐ๋ ๋๋ฉ์ธ
Entity : DB์ mapping๋๋ ์ฉ
Repository : DAO, DB ์ ๊ทผ์ฉ(CRUD)