ORM
ORM์ด๋ ๋ฌด์์ธ๊ฐ์?
ORM(Object Relation Mapping)
ORM์ด๋ ๊ฐ์ฒด์ ํ ์ด๋ธ์ ๋งคํ์์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ์ฌ์ฉํ๊ฒ ํด์ฃผ๋ ๊ธฐ์ ์ด๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ ์ด๋ธ์ ์์, ๋คํ์ฑ ๊ฐ์ ๊ฐ์ฒด์งํฅ์ ํน์ฑ์ด ์์ด Java์ ๊ฐ์ ๊ฐ์ฒด์งํฅ์ ์ธ์ด๋ก ์ ๊ทผํ๋ ๊ฒ์ด ์ฝ์ง ์๋ค.
ORM์ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด์งํฅ์ ์ผ๋ก RDB๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์๋ฐ๋
JPA๋ผ๋ ์๋ฐ ์ง์์ ORM ํ์ค ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ , ๋ํ์ ์ธ ๊ตฌํ์ฑ๋ก Hibernate๊ฐ ์๋ค.
ORM, JPA, Hibernate ์ฅ๋จ์
[์ฅ์ ]
๊ธฐ๋ณธ์ ์ธ CRUD๋ ์ด๋ฏธ ๊ตฌํ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ๊ณ ๊ฐ์ฒด์ค์ฌ์ ๊ฐ๋ฐ์ ํ ์ ์๋ค.
๋ฉ์๋ ํธ์ถ๋ง์ผ๋ก ์ฟผ๋ฆฌ๊ฐ ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ์์ฐ์ฑ์ด ํฅ์๋๊ณ , ์ ์ง๋ณด์ ๋น์ฉ์ด ์ค์ด๋ ๋ค.
ํน์ DB์ ์์กดํ์ง ์๋๋ค.
[๋์ ]
์ง์ SQL์ ํธ์ถํ๋ ๊ฒ๋ณด๋ค๋ ๋๋ฆฌ๋ค.
๋ณต์กํ ์ฟผ๋ฆฌ(๋์ ์ฟผ๋ฆฌ)๋ ๋ฉ์๋๋ง์ผ๋ก ์ฒ๋ฆฌ๊ฐ ํ๋ค๋ค.
MyBatis๋QueryDSL์ ์ฌ์ฉํด ๋์ ์ฟผ๋ฆฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
MyBatis์ JPA๋ฅผ ๋น๊ตํด ์ฃผ์ธ์.
MyBatis
[์ฅ์ ]
๋ณต์กํ ์ฟผ๋ฆฌ ๋๋ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ต์ ํ๋ ์ฟผ๋ฆฌ ์์ฑ์ ์ฉ์ดํ๋ค.
SQL์ ์ง์ ์ ์ดํ ์ ์๊ธฐ ๋๋ฌธ์ SQL์ ์ ์๋ ๊ฒฝ์ฐ, JPA๋ณด๋ค ํ์ต์ ์ฉ์ดํ๊ณ ์ฝ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
[๋จ์ ]
CRUD ๊ฐ์ ๋จ์ํ ์ฝ๋์ ๋ํด ๋ฐ๋ณต์ ์ธ ์์์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ์์ฐ์ฑ์ด ๋จ์ด์ง๊ณ , ์ ์ง๋ณด์๋ ํ๋ค์ด์ง๋ค.
ํน์ DB์ ์ข ์์ ์ด๊ธฐ ๋๋ฌธ์, DB ๋ณ๊ฒฝ์ด ์ด๋ ต๋ค.
JPA
[์ฅ์ ]
Java์ ํ์ค์ ์ด์ฉํ๋ฏ๋ก ํน์ ์ ํ์ ์ข ์๋์ง ์๊ณ , ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐํ ์ ์๋ค.
๊ฐ์ฒด์ ํ ์ด๋ธ์ ์๋์ผ๋ก ๋งคํํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ์์ฐ์ฑ์ด ํฅ์๋๋ค.
ํน์ DB์ ์ข ์์ ์ด์ง ์์ DB ๋ณ๊ฒฝ์ ์ ์ฝ์ด ์๋ค.
[๋จ์ ]
MyBatis์ ๋นํด ๋ฐฐ์ฐ๊ธฐ๊ฐ ์ด๋ ต๋ค.
๋ณต์กํ ์ฟผ๋ฆฌ์๋ ์ ํฉํ์ง ์๋ค.
JPA์ ์ฅ์ ์ด ๊ฐ์ ธ๋ค์ฃผ๋ ์ด์ ์ด ๋๋ฌด ํฌ๊ธฐ ๋๋ฌธ์ ์ต๊ทผ์๋ JPA๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค. ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค๊ธฐ ์ด๋ ต๋ค๋ ๋จ์ ๋ QueryDSL ์คํ์์ค๋ฅผ ํ์ฉํ์ฌ ๋ณด์์ด ๊ฐ๋ฅํ๋ค. ๋ฌผ๋ก ํ์์ ๋ฐ๋ผ ๋ ๊ฐ์ง ๊ธฐ์ ๋ชจ๋ ์ฌ์ฉํ ์๋ ์๋ค.
์ฐธ๊ณ
Last updated