-
JAVA Spring์ ๋ชฉ์ ๐ป IT Study/Spring 2020. 5. 4. 14:51
์คํ๋ง์ ๋ชฉ์ ์ ์์์ ๋ค๋ค๋ ๋๋ก
'๊ฒฝ๋๊ธ ํ๋ ์์ํฌ์ธ ์คํ๋ง์ ํ์ฉํด์ ์ํฐํ๋ผ์ด์ฆ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํธํ๊ฒ' ํ๋ ๊ฒ์ด๋ค.
์๋ ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์ด ํธ๋ฆฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์คํ๋ง์ ์ฌ์ฉํ๋ค.
1. ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์ ๋ณต์กํจ
2. ๋ณต์กํจ์ ํด๊ฒฐํ๋ ค๋ ๋ ธ๋ ฅ
3. ๋ณต์กํจ์ ์๋ํ๋ ์คํ๋ง ์ ๋ต
4. ๊ธฐ์ ์ ์ผ๋ก ์คํ๋ง์ด ์งํฅํ๋ ๋ชฉ์ ์ ์ : POJO ํ๋ก๊ทธ๋๋ฐ
* ๋งจ ๋ฐ์ ๊ฒ์๋ฌผ ๊ฐ๋จ ์ ๋ฆฌ๊ฐ ์๋ค. ์ ์ฒด์ ๊ณผ์ ์ ๊ทธ๊ฑธ ์ฐธ๊ณ ํ๊ธธ ๋ฐ๋๋ค.
1. ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์ ๋ณต์กํจ
2000๋ ๋ ์ด๋ฐ ์๋ฐ ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์ด ์คํจํ๋ ์ด์ ์์๋ ์ฌ๋ฌ๊ฐ์ง ์์ธ์ด ์์๋ค. ๊ทธ ์ค ๊ฐ์ฅ ๋ํ์ ์ธ ๊ฒ ์ํฐํ๋ผ์ด์ฆ ์์คํ ๊ฐ๋ฐ์ด ๋๋ฌด ๋ณต์กํ๋ค๋ ๊ฒ์ด๋ค. ์ํฐํ๋ผ์ด์ฆ ์์คํ ๊ฐ๋ฐ์ด ์ ๋ณต์กํ์ง๋ฅผ ๋ณด๋ฉด ํฌ๊ฒ ๋ ๊ฐ์ง ์์ธ์ ์๊ฐํด๋ณผ ์ ์๋ค.
1) ๊ธฐ์ ์ ๋ณต์กํจ ; ๊ธฐ์ ์ ์ ์ฝ์กฐ๊ฑด๊ณผ ์๊ตฌ์ฌํญ์ด ๋์ด๋จ.
์ํฐํ๋ผ์ด์ฆ ์์คํ ์ด๋ ์๋ฒ์์ ๋์ํ๋ฉฐ ๊ธฐ์ ๊ณผ ์กฐ์ง์ ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํด์ฃผ๋ ์์คํ ์ ๋งํ๋ค. ๋ง์ ์ฌ์ฉ์๋ค์ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํด์ผํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ์์์ ํจ์จ์ ์ผ๋ก ๊ณต์ ํ๊ณ ๋ถ๋ฐฐํด์ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค. ๋ํ ์ค์ํ ๊ธฐ์ ์ ํต์ฌ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ๋ฏธ์ ํฌ๋ฆฌํฐ๊ฑธํ ์์คํ ์ ๋ค๋ฃจ๊ธฐ๋ ํ๊ธฐ ๋๋ฌธ์ ๋ณด์๊ณผ ์์ ์ฑ, ํ์ฅ์ฑ ๋ฉด์์๋ ๋ฐ์ด๋์ผ ํ๋ค. ๋ฐ๋ผ์ ๋ฐ์ด๋ ์ฑ๋ฅ๊ณผ ์๋น์ค์ ์์ ์ฑ์ด ์๊ตฌ๋๊ณ ๊ทธ๋ฐ์ ์ ๊ณ ๋ คํ ๊ฐ๋ฐ๊ธฐ์ ์ด ํ์ํ๋ค. ์ฆ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ ๊ฐ๋ฐํ๋ ๋ฐ๋ ์์ํ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ๋ ๊ฒ ์ธ์๋ ๊ธฐ์ ์ ์ผ๋ก ๊ณ ๋ คํ ์ฌํญ์ด ๋ง๋ค๋ ๋ป์ด๋ค.
๋ ์น์ ํตํ ์ฌ์ฉ์์ ์ธํฐํ์ด์ค ๋ฟ๋ง์๋๋ผ, ํ ์์คํ ๊ณผ์ ์๋ํ๋ ์ฐ๊ณ์ ์น ์ด์ธ์ ํด๋ผ์ด์ธํธ์์ ์ ์์ ์ํ ๋ฆฌ๋ชจํ ๊ธฐ์ ๋ ์๊ตฌ๋๋ค. ๊ธฐ์ ์ ์์คํ ์ด ๋ณต์กํจ์ ๋ฐ๋ผ ๋ค์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ๋์ ํธ๋์ ์ ์ผ๋ก ๋ฌถ์ด์ ์ฌ์ฉํ๋ ๋ถ์ฐ ํธ๋์ญ์ ์ ์ง์๋ ํ์ํ๋ค. ๋ฌธ์ ๋ ์ด๋ฌํ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ ๊ธฐ์ ์ ์ธ ์๊ตฌ์ฌํญ์ ๋จ์ํ ๊ณ ๊ฐ์ ์ ํ๋ฆฌ์บ์ด์ ์๋ฒ(WAS)๋ ํด์ ์ฌ์ฉํ๋ค๊ณ ์ถฉ์กฑ๋ ์ ์๋๊ฒ ์๋๋ผ๋ ์ ์ด๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ์ข ๋ฅ์ ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํ๋ฉด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํด์ผ ํ๋ ๋ถ๋ด์ ์๊ฒ๋๋ค.
์ํฐํ๋ผ์ด์ฆ ์์คํ ์ด ๊ธฐ์ ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ํต์ฌ์ ์ญํ ๋ก ๋ฑ์ฅํ๊ณ ์ค์ํด์ง๋ฉด์ ์ ์ ๋ ๊ธฐ์ ์ ์๊ตฌ๋ ์ฌํ๋๊ณ ๊ทธ์ ๋ฐ๋ฅธ ๋ณต์ก๋๋ ์ฆ๊ฐํ๋ค.
2) ๋น์ฆ๋์ค ๋ณต์กํจ ; ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ตฌํํด์ผํ ๋น์ฆ๋์ค ๋ก์ง์ ๋ณต์กํจ ์ฆ๊ฐ
๊ฐ์๋ก ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ ์ด์ฉํด ๊ธฐ์ ์ ํต์ฌ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํ๋ ๋น์จ์ด ๋์ด๊ฐ๊ณ ์๋ค. ์ ์ฐจ ๋๋ถ๋ถ์ ์ ๋ฌด ์ฒ๋ฆฌ๋ ์ปดํจํฐ๋ฅผ ์ด์ฉํ์ง ์๊ณ ๋ ์์ ์งํํ๊ธฐ ํ๋ค ๋งํผ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ ๋ํ ์ ๋ฌด ์์กด๋๊ฐ ๋์์ก๋ค. ๊ทธ๋งํผ ๋ค์ํ๊ณ ๋ณต์กํ ์ ๋ฌด์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ด ๊ตฌํํด์ผ ํ๋ค๋ ๋ป์ด๋ค. ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ด ๊ด์ฌํ๋ ์ ๋ฌด์ ๋น์จ์ด ๊ธ๊ฒฉํ๊ฒ ์ปค์ง๊ณ ์์ผ๋, ๋น์ฐํ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ๋ ํ๋ค๊ณ ๋ณต์กํด์ ธ ๊ฐ๋ ๊ฒ์ด๋ค.
์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ด ์คํจํ๋ ์ฃผ์ ์์ธ์ธ ๋น์ฆ๋์ค ๋ก์ง์ ๋ณต์กํจ๊ณผ ๊ธฐ์ ์ ๋ณต์กํจ์ ์์๋ณด์๋ค. ๋ณต์กํ๋ค๋ ๊ฑด ๋จ์ ์์ด ๋ง๊ณ ์ด๋ ค์ด ๊ฒ์ ๋งํ๋ ๊ฒ ์๋๋ค. ์ธ๋ถ์์๊ฐ ์ดํดํ๊ธฐ ํ๋ ๋ฐฉ์์ผ๋ก ์ฝํ ์๊ณ , ๊ทธ ๋๋ฌธ์ ์ฝ๊ฒ ๋ค๋ฃจ๊ธฐ ์ด๋ ต๋ค๋ ์๋ฏธ๋ค. ์๋ฐ ์ํฐํ๋ผ์ด์ฆ ์์คํ ๊ฐ๋ฐ์ด ์ด๋ ค์ด ๊ฐ์ฅ ํฐ ์ด์ ๋ ๊ทผ๋ณธ์ ์ธ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ํฐํ๋ผ์ด์ฆ ๊ธฐ์ ์ด๋ผ๋ ๋ ๊ฐ์ง ๋ณต์กํจ์ด ํ๋ฐ ์ฝํ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ ํต์ ์ธ ์๋ฐ ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ ๊ธฐ๋ฒ์ ๋๋ถ๋ถ ๋น์ฆ๋์ค ๋ก์ง์ ๋ณต์กํ ๊ตฌํ ์ฝ๋์ ์ํฐํ๋ผ์ด์ฆ ์๋น์ค๋ฅผ ์ด์ฉํ๋๊ธฐ์ ์ ์ฝ๋๊ฐ ์๊พธ ํผ์ฌ๋ ์ ๋ฐ์ ์๋ ๋ฐฉ์์ด์๋ค. ๊ฒฐ๊ตญ ๊ฐ๋ฐ์๊ฐ ๋์์ ๊ทธ ๋๊ฐ์ง๋ฅผ ๋ชจ๋ ์ ๊ฒฝ์จ์ ๊ฐ๋ฐํด์ผํ๋ ๊ณผ๋ํ ๋ถ๋ด์ ์คฌ๊ณ , ๊ทธ์ ๋ฐ๋ผ ์ ์ฒด์ ๋ณต์กํจ์ ๋ช ๋ฐฐ๋ก ๊ฐ์ค๋๋ค.
2. ๋ณต์กํจ์ ํด๊ฒฐํ๋ ค๋ ๋์
๊ทผ๋ณธ์ ์ผ๋ก ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์ ๋ํ๋๋ ๋ณต์กํจ์ ์์ธ์ ์ ๊ฑฐ ๋์์ด ์๋๋ค. ๊ทธ ๋ณต์กํจ์ ํจ๊ณผ์ ์ผ๋ก ์๋ํ ์ ์๋ ์ ๋ต๊ณผ ๊ธฐ๋ฒ์ด ํ์ํ๋ค. ๋ฌธ์ ๋ ๋น์ฆ๋์ค ๋ก์ง์ ๋ณต์กํจ์ ํจ๊ณผ์ ์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ํ ๋ฐฉ๋ฒ๊ณผ ๊ธฐ์ ์ ์ธ ๋ณต์กํจ์ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐ ์ ์ฉ๋๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฅด๋ค๋ ์ ์ด๋ค. ๋ฐ๋ผ์ ๋ ๊ฐ์ง ๋ณต์กํจ์ด ์ฝ๋์ ํ๋ฐ ์ด์ฐ๋ฌ์ ธ ๋ํ๋๋ ์ ํต์ ์ธ ๊ฐ๋ฐ๋ฐฉ์์์๋ ํจ๊ณผ์ ์ผ๋ก ๋ณต์กํจ์ ๋ค๋ฃจ๊ธฐ๊ฐ ํ๋ค๋ค.
๊ธฐ์ ์ ์ธ ๋ณต์กํจ์ ์ ํ๋ฆฌ์ผ์ด์ ํต์ฌ ๋ก์ง์ ๋ณต์กํจ์์ ์ ๊ฑฐํ๋ ๋ฐ ๋ชฉํ๋ฅผ ๋์๋ค. ์คํ๋ง์ ๋น์นจํฌ์ ๊ธฐ์ ์ ๋ต์ผ๋ก ์ด๋ฅผ ์คํํ๋ค. ๋น์นจํฌ์ ๊ธฐ์ ์ ๊ธฐ์ ์ ์ ์ฉ ์ฌ์ค์ด ์ฝ๋์ ์ง์ ๋ฐ์๋์ง ์๋๋ค. ์ด๋๊ฐ์๋ ๊ธฐ์ ์ ์ ์ฉ์ ๋ฐ๋ผ ํ์ํ ์์ ์ ํด์ค์ผ ํ๊ฒ ์ง๋ง, ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋ ์ฌ๊ธฐ์ ๊ธฐ์ ๋ถ์ฅ ๋ฑ์ฅํ๊ฑฐ๋, ์ฝ๋์ ์ค๊ณ์ ๊ตฌํ๋ฐฉ์์ ์ ํํ์ง ์๋๋ค๋ ๊ฒ ๋น์นจํฌ์ ๊ธฐ์ ์ ํน์ง์ด๋ค.
์คํ๋ง์ ์ด์ฉํ๋ฉด ๊ธฐ์ ์ ๋ณต์กํจ๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๋ค๋ฃจ๋ ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ๋ถ๋ฆฌํ ์ ์๋ค. ์ค์ํ ์ ์ ์คํ๋ง ์ค์ค๋ก๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ๋ถํ์ํ๊ฒ ๋ํ๋์ง ์๋๋ก ํ๋ ๊ฒ์ด๋ค. ๊ผญ ํ์ํ ๊ฒ ๊ฐ์ ๊ฒฝ์ฐ์กฐ์ฐจ๋ ๊ธฐ์ ์ฝ๋๊ฐ ์ง์ ๋ ธ์ถ๋์ง ์๋๋ก ๋ง๋ค์๋ค. ์คํ๋ง์ ์ ์ฉํด๋ ๊ทผ๋ณธ์ ๋ณต์กํจ์ ์์ธ์ด ์ฌ๋ผ์ง๋ ๊ฒ์ ์๋๋ค. ๊ทธ๋ฌ๋ ์คํ๋ง์ ํตํด ์ฑ๊ฒฉ์ด ๋ค๋ฅธ ๋ณต์กํจ๋ค์ ๊น๋ํ๊ฒ ๋ถ๋ฆฌํด์คฌ๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฐ์ ํจ๊ณผ์ ์ผ๋ก ์๋ํ ์ ์๋ ๊ธฐ๋ฐ์ด ๋ง๋ จ๋์๋ค. ๋์์ ์คํ๋ง์ด ์ฝ๋์ ๋ถํ์ํ๊ฒ ๋ฑ์ฅํด์ ๋ถ๊ฐ์ ๋ณต์กํจ์ ๊ฐ์ ธ์ค์ง ์์๋ค.
3. ๋ณต์กํจ์ ์๋ํ๋ ์คํ๋ง ์ ๋ต
์คํ๋ง์ ๊ธฐ๋ณธ์ ์ ๋ต์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ์ํฐํ๋ผ์ด์ฆ ๊ธฐ์ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ๋ถ๋ฆฌ์ํค๋ ๊ฒ์ด๋ค. ์ด ๋ถ๋ฆฌ๋ฅผ ํตํด ๋ ๊ฐ์ง ๋ณต์กํจ์ ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ณต๋ต ๊ฐ๋ฅํ๋ค
- ๊ธฐ์ ์ ๋ณต์กํจ์ ์๋ํ๋ ์ ๋ต
- ๋น์ฆ๋์ค์ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋ณต์กํจ์ ์๋ํ๋ ์ ๋ต
- ํต์ฌ๋๊ตฌ : ๊ฐ์ฒด์งํฅ๊ณผ DI
-
๊ธฐ์ ์ ๋ณต์กํจ์ ์๋ํ๋ ์ ๋ต
๋ฌธ์ 1) ๊ธฐ์ ์ ๋ํ ์ ๊ทผ ๋ฐฉ์์ด ์ผ๊ด์ฑ ์๊ณ , ํน์ ํ๊ฒฝ์ ์ข ์์ ์ด๋ค. ํด๊ฒฐ 1) ์๋น์ค ์ถ์ํ ๊ธฐ์ ์ ์ธ ๋ณต์กํจ์ ์ผ๋จ ์ถ์ํ๋ฅผ ํตํด ๋ก์ฐ๋ ๋ฒจ์ ๊ธฐ์ ๊ตฌํ ๋ถ๋ถ๊ณผ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค๋ฅผ ๋ถ๋ฆฌํ๊ณ , ํ๊ฒฝ๊ณผ ์ธ๋ถ ๊ธฐ์ ์ ๋ ๋ฆฝ์ ์ธ ์ ๊ทผ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ํด๊ฒฐ์ฑ ์ด๋ค. ๋ํ์ ์ธ ์๋ก๋ ํธ๋์ญ์ ์ถ์ํ, OXM ์ถ์ํ, ๋ฐ์ดํฐ ์ก์ธ์ค์ ๊ดํ ์ผ๊ด๋ ์์ธ ๋ณํ๊ธฐ๋ฅ, ๋ฐ์ดํฐ ์ก์ธ์ค ๊ธฐ์ ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ฉ ๊ฐ๋ฅํ ํธ๋์ญ์ ๋๊ธฐํ ๊ธฐ๋ฒ ๋ฑ์ด ์๋ค.
๋ฌธ์ 2) ๊ธฐ์ ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ์ฝ๋๊ฐ ์ฑ๊ฒฉ์ด ๋ค๋ฅธ ์ฝ๋์ ์์ฌ์ ๋ฑ์ฅํ๋ค. ํด๊ฒฐ 2) AOP(Aspect-Oriented Programming, ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ) ์ฑ ์์ ๋ฐ๋ผ ๊ณ์ธต์ ๊ตฌ๋ถํ๊ณ ๊ทธ ์ฌ์ด์ ์๋ก์ ๊ธฐ์ ๊ณผ ํน์ฑ์ ์์กด์ ์ธ ์ธํฐํ์ด์ค๋ ์์ธ์ฒ๋ฆฌ ๋ฑ์ ์ต๋ํ ์ ๊ฑฐํ๋ค๊ณ ํ ์ง๋ผ๊ณ ๊ทผ๋ณธ์ ์ผ๋ก ์ํฐํ๋ผ์ด์ฆ ์๋น์ค๋ฅผ ์ ์ฉํ๋ ํ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค. ์ด๋ฐ ๊ธฐ์ ๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ํผ์ฌ๋ก ๋ฐ์ํ๋ ๋ณต์กํจ์ ํด๊ฒฐํ๊ธฐ ์ํ ์คํ๋ง์ ์ ๊ทผ ๋ฐฉ๋ฒ์ ๋ฐ๋ก AOP์ด๋ค.
AOP๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์ ๊ฑธ์ณ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ ์ฌ์ฌ์ฉํ๋๋ก ์ง์ํ๋ ๊ฒ์ด๋ค. ๊ธฐ์กด์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๋ฐ๋ผ๋ณด๋ ๊ด์ ์ ๋ค๋ฅด๊ฒ ํ์ฌ ๋ถ๊ฐ๊ธฐ๋ฅ์ ์ธ ์ธก๋ฉด์์ ๋ณด์์ ๋ ๊ณตํต๋ ์์๋ฅผ ์ถ์ถํ๋ค. ์ตํ๊น์ง ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋ด๋นํ๋ ์ฝ๋์ ๋ด์ ์๋ ๊ธฐ์ ๊ด๋ จ ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ๋ถ๋ฆฌํด์ ๋ณ๋์ ๋ชจ๋๋ก ๊ด๋ฆฌํ๊ฒ ํด์ฃผ๋ ๊ฐ๋ ฅํ ๊ธฐ์ ์ด๋ค. AOP๋ฅผ ์ ์ฉํ์ง ์์์ ๋๋ ๊ธฐ์ ๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ด ์ง์ ๋ถํ๊ฒ ์ฝํ์ ๋ค๋ฃจ๊ธฐ ํ๋ค๋ค๋ ๋ฌธ์ ๋ ์์ง๋ง ๊ธฐ์ ์ ์ฝ๋๊ฐ ์ฌ๊ธฐ์ ๊ธฐ ์ค๋ณต๋ผ์ ๋ํ๋๋ค๋ ๊ฒ๋ ์ฌ๊ฐํ ๋ฌธ์ ์ด๋ค. AOP๋ ๊ธฐ์ ์ ๋ค๋ฃจ๋ ์ฝ๋๋ก ์ธํ ๋ณต์กํจ์ ๊ธฐ์ ๊ทธ ์์ฒด ์ด์์ผ๋ก ๋ถํ์ํ๊ฒ ์ฆ๋๋์ง ์๋๋ก ๋์์ฃผ๋ ๊ฐ์ฅ ๊ฐ๋ ฅํ ์๋จ์ด๋ค.
-
๋น์ฆ๋์ค์ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋ณต์กํจ์ ์๋ํ๋ ์ ๋ต
๊ธฐ์ ์ ์ฝ๋, ์นจํฌ์ ๊ธฐ์ ์ด ๊ฐ์ ธ์จ ๋ถํ์ํ ํ์ ๋ฑ์ ์ ๊ฑฐํ๊ณ ๋๋ฉด ์์ํ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฃผ์ ๊ธฐ๋ฅ๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด์ ์ฝ๋๋ง ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๊ฒ ๋๋ค. ์ด ์ค์์ ๊ธฐ์ ์ ์ธ ๋ถ๋ถ๊ณผ ๋์จํ๊ฒ๋๋ง ์ฐ๊ด๋๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ฝ๋๋ ์ฌ์ด๋ ๋ฆฌ๋ชจํธ ์ธํฐํ์ด์ค ์ฝ๋ ๋ฑ์ ์ ์ธํ๋ฉด ๋น์ฆ๋์ค ๋ก์ง ์ฝ๋๋ฅผ ๋ค๋ฃจ๋ ์ฝ๋๊ฐ ๋จ๊ฒ๋๋ค. ๋น์ฆ๋์ค ๋ก์ง์ ๋ด์ ์ฝ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ์ฅ ์ค์ํ ํต์ฌ์ด ๋๋ ๋ถ๋ถ์ด๋ค. ๋ํ ์ ๋ฌด์ ๋ณํ์ ๋ฐ๋ผ ์์ฃผ ๋ณ๊ฒฝ๋๊ฑฐ๋ ์์ ๋๋ ๋ถ๋ถ์ด๊ธฐ๋ ํ๋ค.
์๋ฐ๋ ๊ฐ์ฒด์งํฅ ์ธ์ด์ ์ฅ์ ์ ์ ์ด๋ ค์ ์ค๊ณ๋ ์ธ์ด์ด๋ค. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ๊ณผ ์ธ์ด๊ฐ ์ฃผ๋ ์ฅ์ ์ธ ์ ์ฐํ ์ค๊ณ๊ฐ ๊ฐ๋ฅํ๊ณ ์ฌ์์ฉ์ฑ์ด ๋๋ค๋ ์ ์ ํ์ฉํด์ ์์ฃผ ๋ฐ๋๊ณ ์กฐ๊ฑด์ด ๊น๋ค๋ก์ด ๋น์ฆ๋์ค ๋ก์ง์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํด๋ผ ์ ์๋ค. ๊ฐ์ฒด์งํฅ ๋ถ์๊ณผ ์ค๊ณ(OOAD)๋ฅผ ํตํด์ ์์ฑ๋ ๋ชจ๋ธ์ ์ฝ๋๋ก ๊ตฌํํ๊ณ ์ง์์ ์ผ๋ก ๋ฐ์ ์ํฌ ์ ์๋ค.
๋น์นจํฌ์ ๊ธฐ์ ์ธ ์คํ๋ง์ ํต์ฌ ๋ก์ง์ ๋ค๋ฃจ๋ ์ฝ๋์๋ ์คํ๋ง์ ํ์ ์กฐ์ฐจ ์ฐพ์ ์ ์์ ๋งํผ ์์ ์ ๋๋ฌ๋ด์ง ์๋๋ค. ๋ค๋ง ๋ค์๋ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๋ ์ค๋ธ์ ํธ๋ค์๊ฒ ์ ์ ํ ์ํฐํ๋ผ์ด์ฆ ๊ธฐ์ ์๋น์ค๊ฐ ์ ๊ณต๋๋๋ก ์๋ฐํ ๋์์ค๋ค.
๊ฒฐ๊ตญ ๋น์ฆ๋์ค ๋ก์ง์ ๋ณต์กํฉ์ ์๋ํ๋ ์ ๋ต์ '์๋ฐ'๋ผ๋ ๊ฐ์ฒด์งํฅ ๊ธฐ์ ๊ทธ ์์ฒด์ด๋ค. ์คํ๋ง์ ๋จ์ง ๊ฐ์ฒด์งํฅ ์ธ์ด์ ์ฅ์ ์ ์ ๋๋ก ์ด๋ฆฌ์ง ๋ชปํ๊ฒ ๋ฐฉํดํ๋ ์์๋ฅผ ์ ๊ฑฐํ๋๋ก ๋์์ค๋ค.
-
ํต์ฌ๋๊ตฌ : ๊ฐ์ฒด์งํฅ๊ณผ DI
๊ธฐ์ ๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๋ณต์กํจ์ ํด๊ฒฐํ๋ ๋ฐ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ๋ ๋๊ตฌ๊ฐ ๊ฐ์ฒด์งํฅ(OO, Object Orientation)์ด๋ค. ์๋ฐ์ ๊ธฐ๋ณธ์ธ ๊ฐ์ฒด์งํฅ์ ์ถฉ์คํ ์ค๊ณ๊ฐ ๊ฐ๋ฅํ๋๋ก ๋จ์ํ ์ค๋ธ์ ํธ๋ก ๊ฐ๋ฐํ ์ ์๋ค. ๊ฐ์ฒด์งํฅ์ ์ค๊ณ ๊ธฐ๋ฒ์ ์ ์ ์ฉํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ DI๊ฐ์ ์ ์ฉํ ๊ธฐ์ ์ ํธํ๊ฒ ์ ์ฉํ๋๋ก ๋์์ฃผ๋ ๊ฒ์ด ์คํ๋ง์ ๊ธฐ๋ณธ์ ๋ต์ด๋ค.
๊ธฐ์ ์ ๋ณต์กํจ์ ํจ๊ณผ์ ์ผ๋ก ๋ค๋ฃจ๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฒ์ ๋ชจ๋ DI(Dependency Injection, ์์กด์ฑ ์ฃผ์ )๋ฅผ ๋ฐํ์ผ๋ก ํ๊ณ ์๋ค. DI๋ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ์ด ์๋ ์ธ๋ถ๋ก๋ถํฐ ํ์ํ ๊ฐ์ฒด๋ฅผ ๋ฐ์์ ์ฌ์ฉํ๋ ๊ฒ์ ๋งํ๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ์ค์ด๊ณ ์ฝ๋์ ์ฌํ์ฉ์ฑ์ ๋์ฌ์ค๋ค. ๊ฐ์ฒด์งํฅ ์ค๊ณ ๊ธฐ์ ์์ด๋ ๊ทธ ์กด์ฌ ์๋ฏธ๊ฐ ์๋ค. DI๋ ํน๋ณํ ๊ธฐ์ ์ด๋ผ๊ธฐ ๋ณด๋ค๋ ์ ์ฐํ๊ฒ ํ์ฅํ ์ ์๋ ์ค๋ธ์ ํธ ์ค๊ณ๋ฅผ ํ๋ค๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์ ์ฉํ๊ฒ ๋๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ผ ๋ฟ์ด๋ค. ๊ฐ์ฒด์งํฅ ์ธ์ด๋ฅผ ์ด๋ค๊ณ ํด์ ์์ฐ์ค๋ฝ๊ฒ ๊ฐ์ฒด์งํฅ ์ค๊ณ๊ฐ ๋๊ณ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์๋ ๊ฒ์ด ์๋๋ค. ๊ทธ๋ฐ๋ฉด์์ DI๋ ์์ฐ์ค๋ฝ๊ฒ ๊ฐ์ฒด์งํฅ์ ์ธ ์ค๊ณ์ ๊ฐ๋ฐ๋ก ์ด๋์ด์ฃผ๋ ๋๋ฐ์์ด๋ค.
4. ๊ธฐ์ ์ ์ผ๋ก ์คํ๋ง์ด ์งํฅํ๋ ๋ชฉ์ ์ ์ : POJO ํ๋ก๊ทธ๋๋ฐ
"์คํ๋ง์ ์ ์๋ ์ํฐํ๋ผ์ด์ฆ ์๋น์ค ๊ธฐ๋ฅ์ POJO์ ์ ๊ณตํ๋ ๊ฒ"
- Professional Spring Framework -์ํฐํ๋ผ์ด์ฆ ์๋น์ค๋ ๋ณด์, ํธ๋์ญ์ ๊ณผ ๊ฐ์ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์์ ์๊ตฌ๋๋ ๊ธฐ์ ์ ๋งํ๋ค. ์ด๋ฐ ๊ธฐ์ ์ POJO์ ์ ๊ณตํ๋ค๋ ๊ฒ์ ์ํฐํ๋ผ์ด์ฆ ์๋น์ค ๊ธฐ์ ๊ณผ POJO๋ผ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋ด์ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๋ค๋ ๋ป์ด๊ธฐ๋ ํ๋ค. ์คํ๋ง์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ํน์ฅ๊ณผ ๋ชฉํ๋ "๋ถ๋ฆฌ๋์ง๋ง ๋ฐ๋์ ํ์ํ ์ํฐํ๋ผ์ด์ฆ ์๋น์ค ๊ธฐ์ ์ POJO ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ํต์ฌ ๋ก์ง์ ๋ด์ ์ฝ๋์ ์ ๊ณตํ๋ค"๋ ๊ฒ์ด๋ค.
์คํ๋ง์ ํต์ฌ ๊ฐ๋ : POJO
์คํ๋ง์ผ๋ก ๊ฐ๋ฐํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ณธ๊ตฌ์กฐ์ด๋ค. ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ POJO๋ฅผ ์ด์ฉํด์ ๋ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ POJO๊ฐ ์ด๋ป๊ฒ ๊ด๊ณ๋ฅผ ๋งบ๊ณ ๋์ํ๋ ์ง๋ฅผ ์ ์ํด๋์ ์ค๊ณ ์ ๋ณด๋ก ๊ตฌ๋ถ๋๋ค. DI์ ๊ธฐ๋ณธ ์์ด๋์ด๋ ์ ์ฐํ๊ฒ ํ์ฅ ๊ฐ๋ฅํ ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ค์ด๋๊ณ ๊ทธ ๊ด๊ณ๋ ์ธ๋ถ์์ ๋ค์ด๋๋ฏนํ๊ฒ ์ค์ ํด์ค๋ค๋ ๊ฒ์ด๋ค. ์ด๋ฐ DI ๊ฐ๋ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๊ฑธ์ณ ์ ์ฉํ๋ ๊ฒ์ด ์คํ๋ง์ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ด๋ค. ๊ธฐ์ ๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ๊ณ POJO ๋ฐฉ์์ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค๋ ์คํ๋ง์ ๋ชฉ์ ์ ์ฝ๊ฒ ์ด๋ฃจ๊ธฐ ์ํด์๋ ์คํ๋ง๊ณผ ๊ฐ์ POJO ํ๋ ์์ํฌ๊ฐ ํ์ํ๋ค.
POJO ํ๋ก๊ทธ๋๋ฐ์ ์์ฝ๊ฒ ํ ์ ์๋๋ก ์ง์ํ๋ ์ธ๊ฐ์ง ๊ฐ๋ฅ๊ธฐ์ (Enable Technology)
IoC(Inversion of Control) / DI(Dependency Injection)
IoC/DI๋ ์คํ๋ง์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ๊ธฐ์ ์ด์ ์คํ๋ง์ ํต์ฌ ๊ฐ๋ฐ ์์น์ด๋ค. ๋๋จธ์ง ๋๊ฐ์ง ๊ธฐ์ ์ธ AOP, PSA๋ IoC/DI์ ๋ฐํ์ ๋๊ณ ์๋ค. ๋ ๊ฐ์ ์ค๋ธ์ ํธ๋ฅผ ๋ถ๋ฆฌํด์ ๋ง๋ค๊ณ , ์ธํฐํ์ด์ค๋ฅผ ๋๊ณ ๋์จํ๊ฒ ์ฐ๊ฒฐํ ๋ค ์ค์ ์ฌ์ฉํ ๋์์ DI๋ฅผ ํตํด ์ธ๋ถ์์ ์ง์ ํ๋ค.
- IoC(Inversion of Control) : ํ๋ก๊ทธ๋จ์ ์ ์ด๊ถ์ด ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ๋ถ๋ก ์ญ์ ๋ ๊ฒ
- DI(Dependency Injection) : ๊ฐ์ฒด ๊ฐ์ ์์กด๊ด๊ณ๋ฅผ ์ธ๋ถ์์ ์ฃผ์ ํด์ฃผ๋ ๊ฒ
AOP(Aspect Oriented Programming) ํต์ฌ ๊ด๋ฆฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ์ฌ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ํ๋ฅผ ํฅ์์ํค๋ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ์ด๋ค.
๊ณตํต ๊ด์ฌ ์ฌํญ์ ๊ตฌํํ ์ฝ๋๋ฅผ ํต์ฌ ๋ก์ง์ ๊ตฌํํ ์ฝ๋ ์์ ์ฝ์ ํ๋ ๊ฒ์ด๋ค.
PSA (Portable Service Abstraction) : ์ธํฐํ์ด์ค๊ฐ ๋ค๋ฅธ ๋ค์ํ ๊ตฌํ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋๋ก ์ค๊ฐ์ ์ธํฐํ์ด์ค ์ด๋ํฐ ์ญํ ์ ํด์ฃผ๋ ๋ ์ด์ด๋ฅผ ํ๋ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ
Spring์์ ๋์ํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ POJO ์์น์ ์งํค๊ฒ๋ PSA ํํ์ ์ถ์ํ๊ฐ ๋์ด์๋ค. ํ๊ฒฝ๊ณผ ์ธ๋ถ๊ธฐ์ ์ ๋ณํ์ ๊ด๊ณ์์ด ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ๊ธฐ์ ์ ์ ๊ทผํ ์ ์๊ฒ ํด์ค๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ Spring ์์ ์ฌ์ฉํ ๋ ๋ด๋ถ ๊ตฌํ์ด ๋ฌ๋ผ์ง๋๋ผ๋ ๋์ผํ ์ธํฐํ์ด์ค๋ก ๋์ผํ ๊ตฌ๋์ด ๊ฐ๋ฅํ๊ฒ๋ ์ค๊ณ๋์ด ์์ผ๋ฉฐ ์์กด์ฑ์ ๊ณ ๋ คํ ํ์๊ฐ ์๋ค. ์คํ๋ง์ ํน์ ๊ธฐ์ ์ ์ง์ ์ ์ํฅ์ ๋ฐ์ง ์๊ฒ๋ ๊ฐ์ฒด๋ฅผ POJO ๊ธฐ๋ฐ์ผ๋ก ํ๋ฒ์ฉ ๋ ์ถ์ํํ Layer๋ฅผ ๊ฐ๊ณ ์๋ค. ์ด๋ฅผ ํตํด ์ผ๊ด์ฑ ์๋ ์๋น์ค ์ถ์ํ๋ฅผ ๋ง๋ค์ด๋ธ๋ค.
POJO์ ๋ํ ๊ฒ
POJO(Plain Old Java Object)๋ ๋ง ๊ทธ๋๋ก ๊ฐ๋จํ ์๋ฐ ์ค๋ธ์ ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋งํ๋ค.
์ธ ๊ฐ์ง ์กฐ๊ฑด์ ์ถฉ์กฑํด์ผ๋ง POJO๊ฐ ์ฑ๋ฆฝ๋ ์ ์๋ค. ์กฐ๊ฑด๋ค๋ก ์ธํ ์ฅ์ ๋ค์ ์ดํด๋ณธ๋ค.
์กฐ๊ฑด 1) ํน์ ๊ท์ฝ(Contract)์ ์ข ์๋์ง ์๋๋ค. ์ฅ์ 1) ๊น๋ํ ์ฝ๋ ์ฅ์ & ์๋ํ๋ ํ ์คํธ ๋งค์ฐ ์ ๋ฆฌ ์กฐ๊ฑด 2) ํน์ ํ๊ฒฝ์ ์ข ์๋์ง ์๋๋ค. ์กฐ๊ฑด 3) ๊ฐ์ฒด ์งํฅ ์๋ฆฌ์ ์ถฉ์คํด์ผ ํ๋ค. ์ฅ์ 2) ๊ฐ์ฒด ์งํฅ์ ์ค๊ณ ์์ ๋กญ๊ฒ ์ ์ฉ ๊ฐ๋ฅ ์กฐ๊ฑด 1) ํน์ ๊ท์ฝ(Contract)์ ์ข ์๋์ง ์๋๋ค.
์กฐ๊ฑด 2) ํน์ ํ๊ฒฝ์ ์ข ์๋์ง ์๋๋ค.
POJO๋ ์๋ฐ ์ธ์ด์ ๊ผญ ํ์ํ API ์ธ์๋ ์ข ์๋์ง ์์์ผ ํ๋ค. ํน์ ๊ท์ฝ์ ๋ฐ๋ผ ๋ง๋ค๊ฒ ํ๋ ๊ฒฝ์ฐ๋ ๋๋ถ๋ถ ๊ท์ฝ์์ ์ ์ํ๋ ํน์ ํด๋์ค๋ฅผ ์์ํ๋๋ก ์๊ตฌํ๋ค. ๊ทธ๋ด ๊ฒฝ์ฐ ์๋ฐ์ ๋จ์ผ ์์ ์ ํ ๋๋ฌธ์ ๋ ์ด์ ํด๋น ํด๋์ค์ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ค๊ณ ์๋ฒ์ ์ ์ฉํ๊ธฐ๊ฐ ์ด๋ ค์์ง๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค. ๋ํ ๊ท์ฝ์ด ์ ์ฉ๋ ํ๊ฒฝ์ ์ข ์์ ์ด ๋๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํ๊ฒฝ์ผ๋ก ์ด์ ์ด ํ๋ค์ด์ง๋ค. ํน์ ํ๊ฒฝ์ ์ข ์์ ์ด์ด์ผ๋ง ๋์ํ๋ ์ค๋ธ์ ํธ๋ POJO๋ผ๊ณ ํ ์ ์๋ค.
ํน์ ๊ธฐ์ ๊ณผ ํ๊ฒฝ์ ์ข ์๋์ง ์์ ๋ ์ฝ๋๊ฐ ํจ์ฌ ๊น๋ํด์ง๋ค. ํ๊ฒฝ์ ์ ์ฝ์ ์ฝ๋์ ์๋ํ๋ ํ ์คํธ๋ฅผ ์ด๋ ต๊ฒ ํ๋ค. ์ด๋ค ํ๊ฒฝ์๋ ์ข ์๋์ง ์์ POJO ์ฝ๋๋ ๋งค์ฐ ์ ์ฐํ ๋ฐฉ์์ผ๋ก ์ํ๋ ๋ ๋ฒจ์์ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ณ ๋ช ํํ๊ฒ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๋ค.
์กฐ๊ฑด 3) ๊ฐ์ฒด ์งํฅ ์๋ฆฌ์ ์ถฉ์คํด์ผ ํ๋ค.
์ฑ ์๊ณผ ์ญํ ์ด ๊ฐ๊ธฐ ๋ค๋ฅธ ์ฝ๋๋ฅผ ํ ํด๋์ค์ ๋ชฐ์ ๋ฃ์ด ๋ฉ์น ํฐ ๋ง๋ฅ ํด๋์ค๋ก ๋ง๋๋ ๊ฒฝ์ฐ, ์ฌ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ ์ ๋๋ก ๋ค๋ฅธ ๋ ์ด์ด์ ์์ญ์ ์ฝ๋์ ๊ฐํ ๊ฒฐํฉ์ ๊ฐ์ง๊ณ ๋ง๋ค์ด์ง๋ ๊ฒฝ์ฐ, ์์๊ณผ ๋คํ์ฑ์ ์ ์ฉ์ผ๋ก ์ฒ๋ฆฌํ๋ฉด ๊น๋ํ ๊ฒ์ if/swithch ๋ฌธ์ด ๊ฐ๋์ฐฌ ๊ธธ๊ณ ๊ธด ๋ฉ์๋๋ก ์์ฑํด๋์ ๊ฒฝ์ฐ๋ผ๋ฉด ๊ณผ์ฐ ๊ทธ๊ฒ์ด ๊ฐ์ฒด์งํฅ์ ์ธ ์๋ฐ ์ค๋ธ์ ํธ๋ผ๊ณ ํ ์ ์๋ค. ๊ทธ๋ฐ์์ผ๋ก ์ค๊ณ๋๊ณ ๊ฐ๋ฐ๋ ์ค๋ธ์ ํธ๋ผ๋ฉด ๋จ์ง ํน์ ๊ธฐ์ ๊ณผ ํ๊ฒฝ์ ์ข ์์ ์ด์ง ์๋ค๊ณ ํด์ POJO๋ผ๊ณ ๋ถ๋ฆด ์ ์๋ค.
์ด๋ฅผ ํตํด์ ๊ฐ์ฒด์งํฅ์ ์ค๊ณ๋ฅผ ์์ ๋กญ๊ฒ ์ ์ฉ ๊ฐ๋ฅํ๋ค. ๊ฐ๋ฐ์๋ค์ด ์๋ฐ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ, ๋ชจ๋ธ๋ง๊ณผ ์ค๊ณ์ ๋ํด ๋ฐฐ์ธ ๋ ๊ทธ๋ ค๋ดค๋ ๋๋ฉ์ธ ๋ชจ๋ธ๊ณผ ์ค๋ ๊ฒฝํ์ ํตํด ์์ฌ์จ ์ฌํ์ฉ ๊ฐ๋ฅํ ์ค๊ณ ๋ชจ๋ธ์ธ ๋์์ธ ํจํด ๋ฑ์ POJO๊ฐ ์๋๊ณ ๋ ์ ์ฉํ๊ธฐ ํ๋ค๋ค.
์ง์ ํ POJO๋ ๊ฐ์ฒด ์งํฅ์ ์ธ ์๋ฆฌ์ ์ถฉ์คํ๋ฉด์, ํ๊ฒฝ๊ณผ ๊ธฐ์ ์ ์ข ์๋์ง ์๊ณ ํ์์ ๋ฐ๋ผ ์ฌํ์ฉ๋ ์ ์๋ ๋ฐฉ์์ผ๋ก ์ค๊ณ๋ ์ค๋ธํ ํธ๋ฅผ ๋งํ๋ค. ๊ทธ๋ฐ POJO์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๋ก์ง๊ณผ ๊ธฐ๋ฅ์ ๋ด์ ์ค๊ณํ๊ณ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ์ POJO ํ๋ก๊ทธ๋๋ฐ์ด๋ผ ํ ์ ์๋ค.
๊ฐ๋จ์ ๋ฆฌ
- ์๋ฐ ์คํ๋ง ๋ชฉ์ : ๊ฒฝ๋๊ธ ํ๋ ์์ํฌ์ธ ์คํ๋ง์ ํ์ฉํด์ ์ํฐํ๋ผ์ด์ฆ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํธํ๊ฒ
4. ๊ธฐ์ ์ ์ผ๋ก ์คํ๋ง์ด ์งํฅํ๋ ๋ชฉ์ ์ ์ : POJO ํ๋ก๊ทธ๋๋ฐ - ๋ชฉ์ ๋ฌ์ฑ๊ณผ์ ์ ๊ธฐ์ ์ ์ผ๋ก ์ค๋ช
* ๋ชฉ์ ๋ฌ์ฑ ๊ณผ์ ________________________________________________________________
[ ๊ธฐ์ ์ ๋ณต์กํจ + ๋น์ฆ๋์ค ๋ณต์กํจ ] => ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ ๋ณต์ก - 1. ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์ ๋ณต์กํจ
์ด๋ฅผ Spring์์๋ ์ด๋ป๊ฒ ํด๊ฒฐํ์๋๊ฐ?
2. ๋ณต์กํจ์ ํด๊ฒฐํ๋ ค๋ ๋ ธ๋ ฅ
์คํ๋ง์ ๊ธฐ์ ์ ๋ณต์กํจ์ ์ ํ๋ฆฌ์ผ์ด์ ํต์ฌ ๋ก์ง์ ๋ณต์กํจ(๋น์ฆ๋์ค ๋ณต์กํจ)์์ ์ ๊ฑฐํ๋ ๋ฐ ๋ชฉํ๋ฅผ ๋
๊ธฐ์ ์ ๋ณต์กํจ๊ณผ ๋น์ฆ๋์ค ๋ณต์กํจ์ ๋จผ์ ๋ถ๋ฆฌ์์ผ์ค -> HOW? ๋น์นจํฌ์ ๊ธฐ์ ์ ๋ต
3. ๋ณต์กํจ์ ์๋ํ๋ ์คํ๋ง ์ ๋ต
๊ฐ๊ฐ์ ๋ณต์กํจ์ ๋๊ฐ์ง ํต์ฌ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ก ํด๊ฒฐํจ
1) ๊ธฐ์ ์ ๋ณต์กํจ ํด๊ฒฐ -> HOW? DI๋ฅผ ๋ฐํ์ผ๋ก ํ ์๋น์ค ์ถ์ํ์ AOP
2) ๋น์ฆ๋์ค ๋ณต์กํจ ํด๊ฒฐ -> ๊ฐ์ฒด์งํฅ ๊ธฐ์
โป ์ถ์
- ์ ๋ฐ์ ์ธ ๋ด์ฉ ์ฐธ๊ณ : https://12bme.tistory.com/157
- POJO ์ธ๊ฐ์ง ๊ฐ๋ฅ๊ธฐ์ ์ ๋ฆฌ 1 : https://peter0307.tistory.com/8
- POJO ์ธ๊ฐ์ง ๊ฐ๋ฅ๊ธฐ์ ์ ๋ฆฌ 2 : https://jinpyo900.tistory.com/55
- AOP : https://jojoldu.tistory.com/71
'๐ป IT Study > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง ๋์ ์๋ฆฌ ์ดํด (0) 2021.11.06 JAVA Spring ์ ์ ์ดํด๋ณด๊ธฐ (2) 2020.05.02