์ค๋์ ์์ ์ ์ ๊น ๋ง๋ดค๋ DTO
, DAO
, VO
์ ๋ํด ์ ๋ฆฌํ์.
: Data Transfer Object
ํ๋ก์ธ์ค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฐ์ฒด๋ฅผ ์ด๋ฅธ๋ค.
ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ์ผ๋ฐ์ ์ผ๋ก ์๊ฒฉ ์ธํฐํ์ด์ค (ex. ์น ์๋น์ค)๋ก ์ฌ์ ๋ ฌํ๋ฉฐ ์ด๋ฃจ์ด์ง๋๋ฐ ์ด๋ ๊ฐ ํธ์ถ ๋น์ฉ์ด ๋ง์ด ๋ ๋ค.
ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ์๋ณต ์๊ฐ์์ ํธ์ถ ๋น์ฉ์ด ์ปค์ง๊ธฐ ๋๋ฌธ์ ํธ์ถ ์๋ฅผ ์ค์ด๊ธฐ ์ํด ์ฌ๋ฌ ํธ์ถ์ ์ํด ์ ์ก๋๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ ํ๋ฉฐ ์ค์ง ํ๋์ ํธ์ถ๋ง์ผ๋ก ์๋น์ค๋๋ DTO ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค.
์๋ฌดํผ DTO
๋ ๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ ๊ตํ์ ์ํ ๊ฐ์ฒด๋ผ๋ ๊ฒ์ธ๋ฐ ์ด๋ ๊ณ์ธต์ controller, view, business, persistent ๊ณ์ธต์ ๋งํ๋ค.
๋ํ์ ์ธ DTO
๋ก๋ ํผ ๋ฐ์ดํฐ๋น, ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ๋น ๋ฑ์ด ์์ผ๋ฉฐ ๊ฐ ํผ ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ๋งคํํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด์ด๋ค.
๐ ์ฐธ๊ณ ๋ก ์ผ๋ฐ์ ์ธ DTO
๋ ๋ก์ง์ ๊ฐ์ง๊ณ ์์ง ์๋ค. ์์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด์ด๋ฉฐ ์์ฑ๊ณผ ๊ทธ ์์ฑ์ ์ ๊ทผํ๊ธฐ ์ํ getter, setter ๋ฉ์๋๋ง ๊ฐ์ง ํด๋์ค๋ฅผ ๋งํ๋ค.
์ฌ๊ธฐ์ ์ถ๊ฐ์ ์ผ๋ก toString(), equals() ๋ฑ์ Object ํด๋์ค ๋ฉ์๋๋ฅผ ์์ฑํ ์ ์๋ค.
ํํ VO
์ ํผ์ฉํด ์ฌ์ฉํ๋๋ฐ ๊ทธ๋ผ VO
๋ ๋ฌด์์ผ๊น?
: Value Object
๋๋ฉ์ธ์์ ํ ๊ฐ ๋๋ ๊ทธ ์ด์์ ์์ฑ์ ๋ฌถ์ด ํน์ ๊ฐ์ ๋ํ๋ด๋ ๊ฐ์ฒด๋ฅผ ์ด๋ฅธ๋ค.
ํฐ ํน์ง์ผ๋ก๋ setter ์ฆ, ์์ ์๊ฐ ์์ด ๋ถ๋ณ ๊ฐ์ฒด์ด๋ค. (read only)
DTO
์ VO
์ ์ฐจ์ด์ ์ฃผ ๋ชฉ์ ์ ๊ฐ๋ค. ํ์ง๋ง,
VO
๋ DTO
์ ๋์ผํ ๊ฐ๋
์ด์ง๋ง read only ์์ฑ์ ๊ฐ์ง๋ค.DTO
๋ setter๋ฅผ ๊ฐ์ ธ ๊ฐ์ด ๋ณ๊ฒฝ๋ ์ ์๋ค.)VO
๋ ํน์ ํ ๋น์ฆ๋์ค ๊ฐ์ ๋ด๋ ๊ฐ์ฒด์ด๊ณ , DTO
๋ ๊ณ์ธต ๊ฐ ํต์ ์ฉ๋๋ก ์ค๊ณ ๊ฐ๋ ๊ฐ์ฒด์ด๋ค.: Data Access Object
์ค์ง์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ ๊ฐ์ฒด๋ฅผ ์ด๋ฅธ๋ค.
ํจ์จ์ ์ธ ์ปค๋ฅ์
๊ด๋ฆฌ์ ๋ณด์์ฑ๋๋ฌธ์ ์ฌ์ฉํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋๋ฐ DAO
๋ ์ ์์ค logic, ๊ณ ๊ธ ๋น์ฆ๋์ค logic์ ๋ถ๋ฆฌํด ์ถํ ์์ ์ domain logic ๋์ DAO
๋ฅผ ์์ ํ๋ฉด ๋๋ค.
์น ์๋ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ๋งค๋ฒ ์ปค๋ฅ์
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
๊ทธ๋ฐ๋ฐ ์ปค๋ฅ์
๊ฐ์ฒด๋ ๋ชฉ๋ก์ ๋ด๋, ๊ธ์ ์ฝ์ด๋, ๊ธ์ ์์ฑํด๋ ๋ค ๊ฐ๊ฐ ์ปค๋ฅ์
์ ์ผ์ผํค๊ธฐ ๋๋ฌธ์ ๋นํจ์จ์ ์ด๋ค. ๊ทธ๋์ ์ด๋ฅผ ์ํด ConnectionPool
์ด ๋ฑ์ฅํ๋ค.
ConnectionPool
: ์ปค๋ฅ์
๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๊ณ ๊ฐ์ ธ๋ค ์ฐ๊ณ ์ฌ์ฉ ์๋ฃ์ ๋ฐํํ๋ ๊ฒ
ConnectionPool
์ ์ปค๋ฅ์
์ ๋ ๋ง๋๋ ์ค๋ฒํค๋๋ฅผ ํจ์จ์ ์ผ๋ก ํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ๋ ๊ฐ์ฒด๋ฅผ ์ ์ฉ์ผ๋ก ํ๋๋ง ๋ง๋ค๊ณ , ๋ชจ๋ ํ์ด์ง์์ ๊ทธ ๊ฐ์ฒด๋ฅผ ํธ์ถํด ์ฌ์ฉํ๋๋ฐ ์ด๋ ๊ฒ ์ปค๋ฅ์
์ ํ๋๋ง ๊ฐ์ ธ์ค๊ณ ๊ทธ ์ปค๋ฅ์
์ ๊ฐ์ ธ์จ ๊ฐ์ฒด๊ฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์ํํ๋ ๊ฒ์ด DAO ๊ฐ์ฒด์ด๋ค.
์ฆ, DAO๋ DB๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ์กฐ์ํ๋ ๊ธฐ๋ฅ์ ์ ๋ดํ๋๋ก ๋ง๋ ์ค๋ธ์ ํธ์ด๋ค.
์ฌ์ฉ์๋ ์์ ์ด ํ์ํ ์ธํฐํ์ด์ค๋ฅผ DAO์๊ฒ ๋์ง๊ณ DAO๋ ์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉ์์๊ฒ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ฐํํด์ค๋ค.
DB์ ๋ํ ์ ๊ทผ์ DAO๊ฐ ๋ด๋นํ๋๋ก ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ก์ธ์ค๋ฅผ DAO์์๋ง ํ๊ฒ๋๋ฉด ๋ค์์ ์๊ฒฉ ํธ์ถ์ ํตํ ์ค๋ฒํค๋๋ฅผ VO๋ DTO๋ฅผ ํตํด ์ค์ผ ์ ์๊ณ ๋ค์์ DB ํธ์ถ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ๋ํ, ๋จ์ํ ์ฝ๊ธฐ๋ง ํ๋ ์ฐ์ฐ์ด๋ฏ๋ก ํธ๋์ญ์ ๊ฐ ์ค๋ฒํค๋๋ฅผ ๊ฐ์์ํฌ ์ ์๋ค.