JAVA๋ก ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ๋, DB์ ์ ๊ทผํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
ํ์ง๋ง ์ด๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
JAVA๋ ๊ฐ์ฒด์งํฅ ์ธ์ด์ด๊ณ , DB๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๊ธฐ ๋๋ฌธ์ ๋ ๊ธฐ์ ์ฌ์ด์ ํจ๋ฌ๋ค์์ด ๋ถ์ผ์นํ๋ค.
๊ทธ๋์ JAVA ํ๋ก๊ทธ๋๋ฐ์์ DB๋ฅผ ์ฌ์ฉํ ๋, ORM ๊ธฐ์ ์ ์ฌ์ฉํ๋ค.
Object Relational Mapping์ ์ฝ์๋ก, ๊ฐ์ฒด๊ณผ ๊ด๊ณ ๋ฐ์ดํฐ ๊ฐ์ mapping ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ฃผ๋ ๊ธฐ์ ์ด๋ค.
ORM ๊ธฐ์ ๋ก JDBC, Mybatis ๋ฑ์ ๋ง์ด ์ฌ์ฉํ๋ค. ํ์ง๋ง ์ด ๊ธฐ์ ๋ค์ ์ฌ์ฉํ ๋์๋ ์ง์ ๋งคํ ์ฝ๋๋ฅผ ๋ค ์์ฑํด์ค์ผํ๋ ๊ณผ์ ์ด ํ์ํ๋ค.
Mybatis์ JPA์ ์ฐจ์ด์ :
- JPA๋ ๊ด๊ณ ๋งคํ์ ํ ๋, JAVA์์ ๊ฐ์ฒด๋ฅผ ์ง์ ์ ์ฅํ๊ณ , ๋ถ๋ฌ์ฌ ์ ์๋ค.
- Mybatis๋ฅผ ์ฌ์ฉํ๋ฉด JAVA์์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋ถ๋ฌ์ค๊ณ ์ถ์ ๋, ๊ฐ์ฒด์ ์์ด๋๋ฅผ ์ฌ์ฉํด์ผํ๊ณ , ๊ฐ์ฒด์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ๋๋ ์์ด๋๋ฅผ ๊ฑฐ์ณ์ ๊ฐ์ ธ์์ผ ํ๋ ๋จ์ ์ด ์๋ค.
JPA๋ JAVA์์ ์ฌ์ฉํ ์ ์๋ ํ์ค ORM ๊ธฐ์ ์ธ๋ฐ, ์ด๊ฒ์ ์๋ ํ์ด๋ฒ๋ค์ดํธ๋ผ๋ ๊ธฐ์ ์ด ์๊ณ , ํ์ด๋ฒ๋ค์ดํธ๋ฅผ JAVA์ ๋ง๊ฒ ์ฌ์์ฐํด ๋ธ ๊ธฐ์ ์ด๋ค.
๊ทธ๋์ ํ์ด๋ฒ๋ค์ดํธ๋ฅผ ๊ตฌํ์ฒด๋ก ๊ฐ๊ณ , JPA๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋ฐํด JAVA์์ ์ฝ๊ฒ ํ์ด๋ฒ๋ค์ดํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ค์๋ค.
A์ B๊ฐ ์๋ฐฉํฅ ๊ด๊ณ์ผ๋, DB๋ ์ธ๋ํค ํ๋๋ก ๋์ ๊ด๊ณ๋ฅผ ์ ์ํ ์ ์์ง๋ง, JAVA์์๋ A์ B ๋ชจ๋ ์๋ก์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด JAVA์์๋ ์๋ฐฉํฅ ๊ด๊ณ๋ฅผ ๋๊ฐ์ ํ๋๋ก ๋ํ๋ด๊ณ ์๊ณ , DB์์๋ ํ๊ฐ์ ํ๋๋ก ๋ํ๋ด๊ณ ์๋ค.
์ด๋ ๋ฐ์ํ๋ ๋ฌธ์ ์ ์ DB๋ฅผ ์
๋ฐ์ดํธ ์ํค๊ณ ์ถ์ ๋, JAVA์ ๋ ํ๋ ์ค ์ด๋ค ๊ฒ์ ์
๋ฐ์ดํธ ์์ผ์ผ ํ๋์ง ๋๊ฐํด์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ท์น์ ์ ์ํ๋๋ฐ ๋ฐ๋ก ์ฐ๊ด๊ด๊ณ ์ฃผ์ธ์ ์ค์ ํ๋ ๊ฒ์ด๋ค.
์ฐ๊ด๊ด๊ณ ์ฃผ์ธ์ ์ธ๋ํค๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด๋ก ์ง์ ํ๋ค.
๋ฑ๋ก์ด๋ ์์ ์ ์ฐ๊ด๊ด๊ณ ์ฃผ์ธ์ ๊ฑฐ์ณ์ ์์
ํ๊ณ , ์ฃผ์ธ์ด ์๋ ๊ฐ์ฒด๋ ์กฐํ๋ง ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ๊ฐ์ฒด ์ค ํ๋๋ฅผ ์ฃผ์ธ์ผ๋ก ๋จ๋ฐฉํฅ ๋งคํ์ ๋ง๋ค๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์๋ฐฉํฅ์ผ๋ก ์ฌ์ฉํ ์๊ฐ ์๋ค.
์ฒ์์ ๋จ๋ฐฉํฅ์ผ๋ก ๋งคํํ๊ณ , ํ์์ mapped by๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฐฉํฅ ๋งคํ์ ์๋ํ๋ค. (ํ ์ด๋ธ์ ์ํฅ์ ์ฃผ์ง ์๊ธฐ ๋๋ฌธ)
ํ์ํ๋ฉด ์ฐ๊ด๊ด๊ณ ํธ์ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ํ์ฉํ๋ค.