์ค๋ ์๊ฐ์๋ ์คํ๋ง์ ๋ํ ๊ฐ๋ ๊ณผ ํน์ง์ ๋ํด ์์๋ณด๋ฉฐ ์ ์๊ฐ์ด ์คํ๋ง์ด ์ด๋ค๊ฒ์ธ์ง ๋ชจ๋ฅด๊ณ ์ด์ฉํ ๋ชจ๋์๊ฒ ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช ํด๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๊ฒ ์ต๋๋ค!
POJO ํ๋ก๊ทธ๋๋ฐ ์งํฅ(์คํ๋ง์ ๊ฐ์ฅ ํฐ ํน์ง)
Plain Old Java Object โ ์์ ์๋ฐ๋ง์ ํตํด ์์ฑํ ๊ฐ์ฒด๋ฅผ ์๋ฏธ. ์ฆ, ๋ค๋ฅธ ๊ธฐ์ ์ ์ฌ์ฉํ์ง ์๋ ์์ํ Java๋ง์ ์ฌ์ฉํ์ฌ ๋ง๋ ๊ฐ์ฒด
Import๋ฌธ์ ํตํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ๊ฐ์ฒด๋ ์์ํ ์๋ฐ๋ง์ ์ฌ์ฉํ ๊ฒ์ด ์๋๋ฏ๋ก ์ ๊ธฐ์ ์ด ๋ฑ์ฅํ๊ฑฐ๋ ์ฝ๋๋ฅผ ๋ชจ๋ ๊ณ ์ณ์ผํ๋ ์ํฉ์์ ํด๋น ๊ธฐ์ ์ ์ฌ์ฉํ๊ณ ์๋ ๋ชจ๋ ๊ฐ์ฒด๋ค์ ์ฝ๋๋ฅผ ์ ๋ถ ๋ฐ๊พธ์ด์ฃผ์ด์ผํจ
๋ฐ๋ฉด, POJO๋ ์์ ์๋ฐ๋ง์ ์ฌ์ฉํ์ฌ ๋ง๋ ๊ฐ์ฒด์ด๋ฏ๋ก ํน์ ๊ธฐ์ ์ด๋ ํ๊ฒฝ์ ์ข ์๋์ง ์์ ์ธ๋ถ ๊ธฐ์ ์ด๋ ๊ท์ฝ์ ๋ณํ์ ์ฝ๋ฉ์ด์ง ์์, ๋ณด๋ค ์ ์ฐํ๊ฒ ๋ณํ์ ํ์ฅ์ ๋์ฒดํ ์ ์๋ค. POJO ์ฌ์ฉํด ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ๋ฉด ๊ฐ์ฒด์งํฅ ์ค๊ณ๋ฅผ ์ ํ์์ด ์ ์ฉํ ์ ์์ผ๋ฉด์, ์ฝ๋๊ฐ ๋จ์ํด์ ธ ํ ์คํธ์ ๋๋ฒ๊น ๋ํ ์ฌ์์ง๋ค.

POJO ํ๋ก๊ทธ๋๋ฐ์ ์ํด ์คํ๋ง์ด ์ง์ํ๋ ๊ธฐ์ ์IoC/DI,ย AOP,ย PSA๊ฐ ์์.
์๋ฐ๋ ๊ฐ์ฒด์งํฅ์ธ์ด์ด๋ฏ๋ก ๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ ํ ๋งบ์ด์ฃผ๋๊ฒ์ ์ค์ํ ์์. A ์ธ์คํด์ค๊ฐ B ์ธ์คํด์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์๋ค๋ฉด ์ด๋ ์์กด๊ด๊ณ๋ฅผ ๋งบ์ ๊ฒ์ด๊ณ โA๊ฐ B์ ์์กดํ๊ณ ์๋คโ ๋ผ๊ณ ์ค๋ช . ๋ง์ฝ, A๊ฐ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ B๊ฐ ์๋๋ผ, ์๋กญ๊ฒ C๋ฅผ ์ ์ํด์ ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น.

๋ง์ฝ ๊ธฐ์กด์ B๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฒด๊ฐ A ๋ฟ๋ง ์๋๋ผ, ์์ญ ๋๋ ์๋ฐฑ๊ฐ๊ฐ ์๋ค๋ฉด ๋ชจ๋ ๊ฐ์ฒด์ ์ฝ๋๋ฅผ ์์ ํด์ฃผ์ด์ผ ํ๋ค.
๊ทธ๋ฌ๋ ์คํ๋ง์ ์ด์ฉํ๋ฉด ๋ณํ๊ฐ ๋ฐ์ํ ์ํฉ์ ์ต์ํ์ ์์ ๋ง์ผ๋ก ๋ณํ๋ฅผ ์ ์ฐํ๊ฒ ์์ฉ์ด ๊ฐ๋ฅํจ.

A๋ ์์ ์ด ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์ค์ค๋ก ์์ฑํ์ง ์๊ณ , ์์ฑ์๋ฅผ ํตํด ์ธ๋ถ๋ก๋ถํฐ ๋ฐ์์ค๊ณ ์๋ค.ย ์ฆ, A๋ ์์ ์ด ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์์ง ๋ชปํ๋ฉฐ, ๊ทธ์ ย i์ ํ ๋น๋ ์ธ์คํด์ค์ย example()์ด๋ผ๋ ๋ฉ์๋๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ๋ง ์๊ณ ์๋ค.
๋๊ตฐ๊ฐ A๊ฐ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ๊ฒฐ์ ํ๊ณ ์์ฑํด์ A๊ฐ ์ธ์คํด์คํ๋ ๋ ์ธ์๋ก ์ ๋ฌํด์ฃผ์ด์ผ๋ง ํ๋ค. ๊ทธ๋์ผ A๋ B์ ๊ฒ์ด๋ , C์ ๊ฒ์ด๋ ย example()ย ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ ๋๊ตฐ๊ฐ๊ฐ ๋ฌด์์ผ๊น?
๊ทธ ๋๊ตฐ๊ฐ๊ฐ ๋ฐ๋ก ์คํ๋ง์ด๋ค. ์คํ๋ง์ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก์ง ์ธ๋ถ์์ A๊ฐ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ๋ณ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.ย ๊ฐ๋ฐ์๊ฐ ์ค์ ํด๋์ค ํ์ผ์ A๊ฐ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ C๋ก ์ค์ ํด๋๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์ํ๋ฉด์ ์คํ๋ง์ด ์ค์ ํด๋์ค ํ์ผ์ ํด์ํ๊ณ , ๊ฐ๋ฐ์๊ฐ ์ค์ ํด๋๋๋ก C ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ A์ ์์ฑ์์ ์ธ์๋ก C๋ฅผ ์ ๋ฌํด๋๋ค.
์ด์ฒ๋ผย ๊ฐ๋ฐ์๊ฐ ์๋ ์คํ๋ง์ด A๊ฐ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์์กด ๊ด๊ณ๋ฅผ ๋งบ์ด์ฃผ๋ ๊ฒ์ IoC(Inversion of Control, ์ ์ด์ ์ญ์ )๋ผ๊ณ ํ๋ฉฐ, ๊ทธ ๊ณผ์ ์์ C๋ฅผ A์ ์์ฑ์๋ฅผ ํตํด ์ฃผ์ ํด์ฃผ๋ ๊ฒ์ DI(Dependency Injection, ์์กด์ฑ ์ฃผ์ )๋ผ๊ณ ํ๋คโฆ
์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋์ ๊ตฌํํด์ผ ํ๋ ๊ธฐ๋ฅ๋ค์ ํฌ๊ฒย ๊ณตํต ๊ด์ฌ ์ฌํญ๊ณผย ํต์ฌ ๊ด์ฌ ์ฌํญ์ผ๋ก ๋ถ๋ฅํ ์ ์๋ค. ๋จผ์ ,ย ํต์ฌ ๊ด์ฌ ์ฌํญ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ ๊ด์ฌ ์ฌํญ์ผ๋ก, ์ปคํผ ์ฃผ๋ฌธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก ๋ ๋ค๋ฉด ๋ฉ๋ด ๋ฑ๋กํ๊ธฐ, ์ฃผ๋ฌธํ๊ธฐ, ์ฃผ๋ฌธ ๋ณ๊ฒฝํ๊ธฐ ๋ฑ์ด ์์ ๊ฒ์.
๋ฐ๋ฉด,ย ๊ณตํต ๊ด์ฌ ์ฌํญ์ ๋ชจ๋ ํต์ฌ ๊ด์ฌ ์ฌํญ์ ๊ณตํต์ ์ผ๋ก ์ ์ฉ๋๋ ๊ด์ฌ ์ฌํญ๋ค์ ์๋ฏธํ๋ค.ย ์๋ฅผ ๋ค์ด, ๋ฉ๋ด ๋ฑ๋กํ๊ธฐ, ์ฃผ๋ฌธํ๊ธฐ, ์ฃผ๋ฌธ ๋ณ๊ฒฝํ๊ธฐ ๋ฑ ๋ชจ๋ ํต์ฌ ๊ด์ฌ ์ฌํญ์๋ ๋ก๊น ์ด๋ ๋ณด์ ๋ฑ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ๋ค์ด ๊ณตํต์ ์ผ๋ก ์ ์ฉ๋๋ค.
์ด ๋, ํต์ฌ ๊ด์ฌ ์ฌํญ๊ณผ ๊ณตํต ๊ด์ฌ ์ฌํญ์ด ์ฝ๋์ ์๋์ ๊ฐ์ด ํจ๊ป ๋ชจ์ฌ ์์ผ๋ฉด ํ์ฐ์ ์ผ๋กย ๊ณตํต ๊ด์ฌ ์ฌํญ๊ณผ ๊ด๋ จ๋ ์ฝ๋๊ฐ ์ค๋ณต๋จ. ์ด์ฒ๋ผ ์ฝ๋๊ฐ ์ค๋ณต๋์ด์ ธ ์๋ ๊ฒฝ์ฐ,ย ๊ณตํต ๊ด์ฌ ์ฌํญ์ ์ํํ๋ ๋ก์ง์ด ๋ณ๊ฒฝ๋๋ฉด ๋ชจ๋ ์ค๋ณต ์ฝ๋๋ฅผ ์ฐพ์์ ์ผ์ผ์ด ์์ ํด์ฃผ์ด์ผ๋ง ํฉ๋๋ค.

์ฝ๋์ ์ค๋ณต์ด๋ผ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๊ณตํต ๊ด์ฌ ์ฌํญ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ๋ค์ ๋ณ๋์ ๊ฐ์ฒด๋ก ๋ถ๋ฆฌํด๋ธ ๋ค์, ๋ถ๋ฆฌํด๋ธ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํตํด ๊ณตํต ๊ด์ฌ ์ฌํญ์ ๊ตฌํํ ์ฝ๋๋ฅผ ์คํ์ํฌ ์ ์๋๋กํด์ผํ๋ค. ์ด๋ ๊ฒ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๊ฑธ์ณ ์ ์ฉํ๋ ๊ณตํต๊ธฐ๋ฅ์ ๋น์ฆ๋์ค ๋ก์ง์ผ๋ก๋ถํฐ ๋ถ๋ฆฌํด๋ด๋ ๊ฒ์ AOP๋ผ๊ณ ํจ.
์คํ๋ง์ ์๋ฐ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์์ด ํต์ฌ์ ์ธ ์ญํ ์ ์ํํ๋ ํ๋ ์์ํฌ์ด๋ค. ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ผ์ด๋ผ์ ์๋ ๊ฐ๋ ์ด๊ณ , ์น์๋ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํตํ๋ฉฐ ์น ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํด์ผํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข ๋ฅ๋ MySQL, Oracle, Maria DB, Mongo DB ๋ค์ํ๋ค.
๋ง์ฝ MySQL์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์ ์๋ฃ, ํ์ Maria DB๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐ๊ฟ์ผ ํ๋ ์ํฉ์ ๊ฐ์ ํ๋ฉด ์์ฒญ๋ ์์ ์์ ํด์ผํ๋ค.
๊ทธ๋ฌ๋ ์คํ๋ง์ ์ฌ์ฉํ๋ฉด ๋์ผํ ์ฌ์ฉ๋ฐฉ๋ฒ์ ์ ์งํ ์ฑ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐ๊ฟ ์ ์๋ค. ์ด๋ย ์คํ๋ง์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค๋ฅผ ์ถ์ํํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ๋ค. ์ฆ, ์คํ๋ง์ ์๋ฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๊ท์ ํ ์ธํฐํ์ด์ค๋ฅผ ์ ์ฉํ๊ณ ์๊ณ , ์ด๋ฅผ JDBC(Java Database Connectivity)๋ผ๊ณ ํจ
์ด๋ฌํ JDBC์ฒ๋ผย **ํน์ ๊ธฐ์ ๊ณผ ๊ด๋ จ๋ ์๋น์ค๋ฅผ ์ถ์ํํ์ฌ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋ ์ ์๋๋ก ํ ๊ฒ์ PSA(Portable Service Abstraction, ์ผ๊ด๋ ์๋น์ค ์ถ์ํ)๋ผ๊ณ ํจ.
์คํ๋ง ๋ถํธ๋ ์คํ๋ง์ผ๋ก ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค๋ ํ์ํ ์ค์ ์ ๊ฐํธํ๊ฒ ์ฒ๋ฆฌํด์ฃผ๋ ๋ณ๋์ ํ๋ ์์ํฌ์ด๋ค.
์คํ๋ง ๋ถํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๊ธฐ ์ค์ ์ ๊ฐํธํ๊ฒ ํ ์ ์๋ ๊ฒ ์ธ์๋ ๋ช ๊ฐ์ง ์ฅ์ ์ด ์๋ค. ๊ธฐ์กด์๋ ๋ฐฐํฌ๋ฅผ ํ ๋์ ๋ณ๋์ ์ธ์ฅ ์น ์๋ฒ๋ฅผ ์ค์นํ๊ณ , ํ๋ก์ ํธ๋ฅผ War ํ์ผ๋ก ๋น๋ํ์ฌ ๋ฐฐํฌ๋ฅผ ์งํํ๋๋ฐ, ์ด๋ฌํ ๋ฐฉ์์ ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ฆฌ๋ฉฐ ๋ฒ๊ฑฐ๋กญ๋ค๋ ๋จ์ ์ ๊ฐ์ง๋ค. ๋ฐ๋ฉด, ์คํ๋ง ๋ถํธ๋ ์์ฒด์ ์ธ ์น ์๋ฒ๋ฅผ ๋ด์ฅํ๊ณ ์์ด, ๋น ๋ฅด๊ณ ๊ฐํธํ๊ฒ ๋ฐฐํฌ๋ฅผ ์งํํ ์ ์์ต๋๋ค. ๋ํ, ์คํ๋ง ๋ถํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋
๋ฆฝ์ ์ผ๋ก ์คํ ๊ฐ๋ฅํ Jar ํ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๋น๋ํ ์ ์์ด, ํด๋ผ์ฐ๋ ์๋น์ค ๋ฐ ๋์ปค์ ๊ฐ์ ๊ฐ์ํ ํ๊ฒฝ์ ๋น ๋ฅด๊ฒ ๋ฐฐํฌํ ์ ์์.
๋ค์ ์๊ฐ์๋ ์คํ๋ง๋ถํธ์ ๋ํ ํฌ์คํ
์ผ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋คโฃ๏ธ