์๋ฐ ORM ๊ธฐ์ ์ ๋ํ ํ์ค ๋ช ์ธ๋ก, JAVA์์ ์ ๊ณตํ๋ API์ด๋ค.
Spring์์ ์ ๊ณตํ๋๊ฒ์ด ์๋๋ค!
์๋ฐ ์ดํ๋ฆฌ์ผ์ด์ ์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ ์ํ ์ธํฐํ์ด์ค๋ค.
ORM์ด๊ธฐ ๋๋ฌธ์ ์๋ฐ ํด๋์ค์ DBํ ์ด๋ธ์ ๋งคํํ๋ค.
SQL ์ฟผ๋ฆฌ๋ฌธ์ ๋งคํํ์ง ์๋๋ค.
ORM์ ์ฌ์ฉํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ฅผ ๋ชจ์๋ ๊ฒ์ด๋ฉฐ, JPA๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ JPA๋ฅผ ๊ตฌํํ Hibernate, EclipseLink, DataNucleus๊ฐ์ ORM ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
ORM์ด๋ Java ๊ฐ์ฒด์ DB์ ํ ์ด๋ธ์ด ๋งคํ์ ์ด๋ฃจ๋ ๊ฒ์ ๋งํ๋ค.
์ฆ, ๊ฐ์ฒด๊ฐ ํ ์ด๋ธ์ด ๋๋๋ก ๋งคํ ์์ผ์ฃผ๋ ๊ฒ์ผ๋ก ์ดํดํ๋ฉด ๋๋ค.
ORM์ ์ด์ฉํ๋ฉด SQL Query๊ฐ ์๋ ๋ฉ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, User ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด์ MySQL์์๋ SELECT * FROM user;
๋ผ๋ Query๋ฅผ ์คํํด์ผ ๋๋ค.
ํ์ง๋ง ORM์ ์ฌ์ฉํ๋ฉด User ํ
์ด๋ธ๊ณผ ๋งคํ๋ ๊ฐ์ฒด๋ฅผ user๋ผ ํ ๋, user.findAll()
๋ผ๋ ๋ฉ์๋ ํธ์ถ๋ก ๋ฐ์ดํฐ ์กฐํ๊ฐ ๊ฐ๋ฅํ๋ค.
Query๋ฅผ ์ง์ ์์ฑํ์ง ์๊ณ ๋ฉ์๋ ํธ์ถ๋ง์ผ๋ก Query๊ฐ ์ํ๋๋ค ๋ณด๋, ORM์ ์ฌ์ฉํ๋ฉด ์ ์ง๋ณด์๊ฐ ํธํด์ง๋ค.
๊ทธ๋ฌ๋ Query๊ฐ ๋ณต์กํด์ง๋ฉด ORM์ผ๋ก ํํํ๋๋ฐ ํ๊ณ๊ฐ ์๊ณ , ์ฑ๋ฅ์ด Raw Query์ ๋นํด ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์๊ธฐ๋๋ฌธ์
ํ ํ๋ก์ ํธ ๋ด์์ Mybatis์ JPA๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
๊ฐ์ฒด์ ํ ์ด๋ธ ๊ฐ์ ๋งคํ์ ๋จ์ํ ํจ์ผ๋ก ์๋ฐ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃฐ ์ ์๋ค.
JPA๋ ๋ฐ๋ณต์ ์ธ CRUD SQL์ ์ฒ๋ฆฌํด์ค๋ค.
JPA๋ ๋งคํ๋ ๊ด๊ณ๋ฅผ ์ด์ฉํด์ SQL์ ์์ฑํ๊ณ ์คํํ๋๋ฐ, ๊ฐ๋ฐ์๋ ์ด๋ค SQL์ด ์คํ๋ ์ง ์๊ฐ๋งํ๋ฉด ๋๋ค๋ ํธ๋ฆฌํจ์ด ์๋ค.
JPA๋ฅผ ์ฌ์ฉํ์ฌ ์ป์ ์ ์๋ ๊ฐ์ฅ ํฐ ๊ฒ์ SQL์๋ ๊ฐ์ฒด ์ค์ฌ์ผ๋ก ๊ฐ๋ฐํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์ด์ ๋ฐ๋ผ ๋น์ฐํ ์์ฐ์ฑ์ด ์ข์์ง๊ณ ์ ์ง๋ณด์๋ ์์ํ๋ค.