MyBatis : Java์์ SQL Mapper๋ฅผ ์ง์ํด์ฃผ๋ ํ๋ ์์ํฌ
JPA : Java ORM ๊ธฐ์ ํ์ค
Java์์ SQL Mapper๋ฅผ ์ง์ํด์ฃผ๋ ํ๋ ์์ํฌ
- SQL๋ฌธ์ ์ด์ฉํ์ฌ DB์ ์ ๊ทผํ๋ค.
- SQL๋ฌธ์ ์ง์ ์์ฑํ๊ณ ์ฟผ๋ฆฌ ์ํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ฒด์ ๋งคํํ๋ค.
Java ORM์ ๊ธฐ์ ํ์ค
- ์ธํฐํ์ด์ค์ด๋ฏ๋ก Hibernate, OpenJPA ๋ฑ์ด JPA๋ฅผ ๊ตฌํํจ
SQL๋ฌธ์ด ์๋๋ผ DB์ ๋ฐ์ดํฐ ์์ฒด์ ๋งคํํ๊ธฐ ๋๋ฌธ์ SQL๋ฌธ์ ์ง์ ์์ฑํ์ง ์์
(๋งคํ์ ํ์ํ SQL๋ฌธ์ ์๋์ผ๋ก ๋ง๋ค์ด์ค)
CRUD ๋ฉ์๋ ๊ธฐ๋ณธ ์ ๊ณต
SQL๋ฌธ์ด ์๋ Method๋ฅผ ํตํด DB๋ฅผ ์กฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด ์ค์ฌ์ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค.
DB์ ์ข ์์ ์ด์ง ์์ โ DB์ ์ข ๋ฅ์ ๊ด๊ณ์์ด ์ฌ์ฉํ ์ ์๋ค.
์ ์ง๋ณด์, ๋ฆฌํฉํ ๋ง์ ์ฉ์ดํ๋ค.
๋์ผํ ์ฟผ๋ฆฌ์ ๋ํ ์บ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋์ฑ ๋์ ์ฑ๋ฅ์ ๋ผ ์ ์๋ค.
Q. MyBatis, JPA์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
A. MyBatis๋ SQL Mapper, JPA๋ ORM(Object-Relational Mapping)์
๋๋ค.
MyBatis๋ SQL Mapper์ด๊ธฐ ๋๋ฌธ์ SQL๋ฌธ์ ์ฌ์ฉํ์ฌ DB์ ์ ๊ทผํฉ๋๋ค. SQL๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋ณต์กํ SQL๋ฌธ์ ๋ ์ฝ๊ฒ ์์ฑํ ์ ์๊ณ , SQL๋ฌธ์ xmlํ์ผ๋ก ๋ถ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌํ๊ธฐ ์ฝ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ DB์ ๋ฐ๋ผ SQL ๋ฌธ๋ฒ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ DB ์ข
๋ฅ๋ฅผ ๋ฐ๊ฟ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค.
JPA๋ ORM์ผ๋ก, SQL๋ฌธ์ด ์๋๋ผ DB์ ๋ฐ์ดํฐ ์์ฒด์ ๋งคํํฉ๋๋ค. CRUD ๋ฉ์๋๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๊ณ SQL๋ฌธ์ ์๋์ผ๋ก ๋ง๋ค์ด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๋ Method๋ฅผ ์ฌ์ฉํ๋ฉฐ ๊ฐ์ฒด ์ค์ฌ์ผ๋ก ๊ฐ๋ฐํ ์ ์์ต๋๋ค. SQL๋ฌธ์ ์ง์ ์์ฑํ๋๊ฒ ์๋๋ผ์ DB ์ข
๋ฅ์ ๊ด๊ณ ์์ด ์ฌ์ฉํ ์ ์๊ณ ์บ์ ๊ธฐ๋ฅ๋ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฌ๋์ปค๋ธ๊ฐ ๋๊ณ ๋ณต์กํ ์ฟผ๋ฆฌ์ ์ฝํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ๋ก JPQL, QueryDSL์ ์ฌ์ฉํ๊ฑฐ๋ SQL Mapper๋ฅผ ํผ์ฉํด์ ์ฌ์ฉํด์ผ ํ ์ ์์ต๋๋ค.
Q. JPA๋ฅผ ์ฌ์ฉํ ์ด์ ๊ฐ ๋ฌด์์ธ๊ฐ์?
A. JPA์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ๋ฐ๋ณต์ ์ธ CRUD SQL์ ์์ฑํ ํ์๊ฐ ์๋ค๋ ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํนํ ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ์ด๋ฐ CRUD SQL์ด ๋ ๋ง์ด ํ์ํ๊ฒ ๋ฉ๋๋ค. JPA๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ด๋ฐ ๊ฐ๋จํ ์์ ์ JPA์๊ฒ ๋งก๊ธฐ๊ณ ๊ฐ๋ฐ์๋ ๋ค๋ฅธ ์ผ์ ์ง์คํ ์ ์์ต๋๋ค. ์ ๊ฐ ์งํํ ํ๋ก์ ํธ๋ ๊ท๋ชจ๊ฐ ํฌ์ง๋ ์์์ง๋ง ์ด๋ฐ JPA์ ์ฅ์ ์ ๋๊ปด๋ณด๊ณ ์ถ์ด์ JPA๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์งํํ์์ต๋๋ค. ๋ํ JPA๋ ๋ฌ๋์ปค๋ธ๊ฐ ๋์๋ฐ JPA๋ฅผ ๊ณต๋ถํ๊ณ ์ฌ์ฉํ๋ฉด์ ๋ค์์ JPA๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ๋ ๋์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ฌ ๋ฏธ๋ฆฌ ๊ณต๋ถํ๊ณ ์ถ์์ต๋๋ค.