๐Spring๊ณผ POJO
Plain Old Java Object
POJO
์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์ ์ด๋ ค์์ ๊ทน๋ณตํ๊ธฐ ์ํด EJB๊ฐ ๋์์ง๋ง ๋ฐฉํฅ์ ์๋ชป์ก์๋ค.
๋ณต์ก์ฑ์ ๊ทน๋ณตํ๊ธฐ ์ํด ๋ ํฐ ๋ณต์ก์ฑ์ด ๋์
๋ ๊ฒ์ด๋ค.
ํ๋ ์์ํฌ๋ฅผ ์ดํดํ์ง ์๊ณ ์๋ ์์ Java ๊ฐ๋ฐ์๊ฐ ์ดํดํ๊ธฐ ์ด๋ ค์ ๋ค.
์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ ์นจํฌ์ ์ธ(invasive) ๋ฐฉ์์ด๋ผ ํ๋ค.
์ด๋ค ๊ธฐ์ ์ ์ ์ฉํ์ ๋ ๊ทธ ๊ธฐ์ ๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ ๊ท์ฝ ๋ฑ์ด ์ฝ๋์ ๋ฑ์ฅํ๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค.
์คํ๋ง์ ๋น์นจํฌ์ ์ธ(non-invasive) ๊ธฐ์ ์ด๋ค.
EJB๋ ์ฐจ๋ณ๋๋ ํต์ฌ ์ฒ ํ์ด๋ค.
์ด๋ ์ ๋๋ ํ๋ ์์ํฌ๋ฅผ ์ํ ์์
์ด ์๊ฒ ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ์ฝ๋์ ์ค๊ณ์ ๊ตฌํ๋ฐฉ์์ ์ ํํ์ง ์๋ ๊ฒ์ด ํน์ง์ด๋ค.
AOP์ ๊ฐ์ ๊ธฐ์ ๋ ๋น์ง๋์ค ๋ก์ง์ ๊ธฐ์ ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ๊ฐ์ถ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ผ ํ ์ ์๋ค.
(์ด๋ฅผ ์ํด ์ด์ฌํ ๋์ ํ๋ก์๋ ์ ์ฉํ๊ณ ์ค๋ฆฌ์ ๋ฐ์ฒ๋ผ ์ด์ฌํ ์์ง์ธ๋ค)
๊ทธ๋ฆฌ๊ณ ๊ถ๊ทน์ ์ธ ๋ชฉ์ ์ ์๋ฐ ์ธ์ด๊ฐ ๊ฐ์ง ๊ฐ์ฒด์งํฅ์ด๋ผ๋ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ๊ทน๋ํํด์ ์ฌ์ฉํ ์ ์๋๋ก ๋๋ ๊ฒ์ด๋ผ ํ ์ ์๋ค.
์คํ๋ง์ ํต์ฌ POJO
POJO(Plain Old Java Object)๋ ๋งํด ํ์ธ๋ฌ๊ฐ 2000๋
์ ์ปจํผ๋ฐ์ค ๋ฐํ๋ฅผ ์ค๋นํ๋ค๊ฐ ๋ง๋ค์ด๋ธ ์ฉ์ด๋ผ๊ณ ํ๋ค.
ํ์ด์ ์ค๋ช
ํ๋ฉด โ๊ฐ๋จํ ์๋ฐ ์ค๋ธ์ ํธ๋ฅผ ์ฌ์ฉํ๋๋ฐ์โ ์ด๋ค.
์คํ๋ง์ ์ ์๋ ์ํฐํ๋ผ์ด์ฆ ์๋น์ค ๊ธฐ๋ฅ์ POJO์ ์ ๊ณตํ๋ ๊ฒ
=> 3๋ ์์์ธ IoC/DI, AOP, PSA๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์
์ POJO๋ก ๊ฐ๋ฐํ ์ ์๊ฒ ํด์ฃผ๋ enabling technology๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
(PSA :Potable Service Abstraction => ํ๊ฒฝ๊ณผ ์ธ๋ถ ๊ธฐ์ ์ ๋ณํ์์ด ์ผ๊ด๋ ๋ฐฉใ
์์ผ๋ก ๊ธฐ์ ์ ์ ๊ทผ๊ฐ
์ด๋ ๊ฒ ์ถ์ํ ๊ณ์ธต์ ์ฌ์ฉํ์ฌ ์ด๋ค ๊ธฐ์ ์ ๋ด๋ถ์ ์จ๊ธฐ๊ณ ๊ฐ๋ฐ์์๊ฒ ํธ์์ฑ์ ์ ๊ณตํด์ฃผ๋ ๊ฒ์ด ์๋น์ค ์ถ์ํ(Service Abstraction)์
๋๋ค.)
POJO๋ ํน์ ๊ท์ฝ์ด๋ ํน์ ํ๊ฒฝ์ ์ข
์๋์ง ์๋๋ค.
๋๋ฉ์ธ์ ๊ฐ๊น์ด ๊ฐ์ฒด์งํฅ์ ์ธ ์ค๊ณ๋ฅผ ์์ ๋กญ๊ฒ ์ ์ฉํ ์ ์๋ ๊ฒ์ด๋ค.