๐ฉ๐ผโ๐ ์ด ๊ธ์ ๊น์ํ๋์ '์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ'์ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๊ฒ์์ ์๋ฆฝ๋๋ค.
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ฐ์ฅ ๋์ค์ ์ด๊ณ ์ ๋ขฐํ ์ ์๋ ์ ์ฅ์๋ก, ๋๋ถ๋ถ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅ์๋ก ์ฌ์ฉ
- ์ด๋ฌํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด์๋ SQL(๊ตฌ์กฐํ ์ง์์ด)๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฌ
- ์๋ฐ์์๋ JDBC API๋ฅผ ์ฌ์ฉํ์ฌ SQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ฌ
- ๊ฐ์ฒด ์ค์ฌ์ ์ผ๋ก ์ง์ฌ์ง ์๋ฐ์ ๋ฐ์ดํฐ ์ค์ฌ์ผ๋ก ์ง์ฌ์ง ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฐจ์ด๊ฐ ์กด์ฌํ๋ฏ๋ก ๋ฐ๋ก ์ ์ฅ์ด ๋ถ๊ฐ, ๋ฐ๋ผ์ ์ค๊ฐ์์ ๋ณํํด์ฃผ์ด์ผ ํ๋ ๊ณผ์ ์ด ํ์
- ์ด๋ฌํ ๊ณผ์ ์ ๊ต์ฅํ ๋ง์ SQL๋ฌธ๊ณผ JDBC API๋ฅผ ์ฝ๋๋ก ์์ฑํด์ผ ํ๋๋ฐ ์ด๋ ์ง๋ฃจํจ์ ์ฐ์
- ์ฐ๊ด๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์์ง ์์์ง๋ ์ฌ์ฉ๋๋ SQL์ ๋ฌ๋ ค ์์ผ๋ฏ๋ก ์ด๋ SQL์ ์ฌ์ฉํ๋ ๊ณ์ธต์ ์ถ์ํ ์์ผ๋ ์ด๋ค SQL์ด ์ฌ์ฉ๋๋์ง ์ผ์ผ์ด ํ์ธ์ ํด์ผ ํจ(๋ ผ๋ฆฌ์ ์ข ์)
- ์ด๋ ์ฆ, ์ํฐํฐ(๋ชจ๋ธ๋งํ ๊ฐ์ฒด)๋ฅผ ์ ๋ขฐ ํ ์ ์๋ค๋ ๊ฒ๊ณผ ๋์ผ
- ํ๋์ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ถ๋ถ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ก ๊ฐ๋ฐ
- ๊ฐ์ฒด๋ค์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ์ด๋๊ฐ์ ์๊ตฌ์ ์ผ๋ก ๋ณด๊ด, ๋ฉ์๋๋ ํด๋์ค์ ์ด๋ฏธ ์ ์๋์ด ์์ผ๋ฏ๋ก ๊ฐ์ฒด ์ธ์คํด์ค์ ์์ฑ๋ง ๋ฐ๋ก ์ ์ฅ ๋ฐ ๋ณต๊ตฌ
- ๋จ์ํ ๊ฐ์ฒด์ ๊ฒฝ์ฐ ํ์ผ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ฉด ๋์ง๋ง, ์์ ๋ฐ๋๋ค๊ฑฐ๋ ์ฐธ์กฐ๋ฅผ ํ๊ณ ์๋ค๋ฉด ์ ์ฅํ๊ธฐ ์ฝ์ง ์์
์) ์ถ๊ตฌ ์ ์๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ ์ฅ, ํด๋น ๊ฐ์ฒด๋ ํ์ ์ฐธ์กฐ ํํ๋ก ๊ฐ์ง๊ณ ์์ ๋จ์ํ ์ถ๊ตฌ ์ ์๋ง ์ ์ฅํ๋ค๋ฉด ํด๋น ์ ์๋ ํ ๊ฐ์ฒด๋ฅผ ์์ด๋ฒ๋ฆผ - ๋์ฒด์์ผ๋ก ์๋ฐ์์๋ ์ง๋ ฌํ/์ญ์ง๋ ฌํ๋ฅผ ์ ๊ณตํ์ง๋ง ์ด๋ ์ง๋ ฌํ ๋์ด์๋ ๊ฐ์ฒด๋ฅผ ๊ฒ์ํ๊ธฐ๊ฐ ์ด๋ ค์
- ํ์ค์ ์ผ๋ก๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ๊ฒ์ด์ง๋ง ์ด๋ ๋ฐ์ดํฐ ์ค์ฌ์ผ๋ก ๊ตฌ์กฐํ๋์ด ์์ผ๋ฉฐ, ๊ฐ์ฒด์งํฅ์์์ ์ถ์ํ, ์์, ๋คํ์ฑ๊ณผ ๊ฐ์ ๊ฐ๋ ์ด ์กด์ฌํ์ง ์์
- ์ด๋ฅผ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํจ๋ฌ๋ค์ ๋ถ์ผ์น๋ผ๊ณ ํจ
- ๊ฐ์ฒด๋ ์์์ด ์กด์ฌ, ํ ์ด๋ธ์ ์์์ด๋ ๊ธฐ๋ฅ์ด ์กด์ฌํ์ง ์์
- ์ํผํ์ ๊ณผ ์๋ธํ์ ๊ด๊ณ๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์ด๋ธ์์ ์์๊ณผ ๋น์ทํ๊ฒ ์ค๊ณ๋ ๊ฐ๋ฅ
- ํ์ง๋ง ์ด๋ ํ๋ฒ์ ์กฐํํ๋ SQL์ ์กด์ฌํ์ง ์์ ์์ฑํด์ผ ํ ์ฝ๋๊ฐ ๋ง๊ณ , ์์ ํ์ ์ ๋ฐ๋ผ 'DTYPE'๋ ์ ์ฅ
- ๊ฐ์ฒด - ์ฐธ์กฐ๋ฅผ ํตํด ์ฐ๊ด๋ ๊ฐ์ฒด ์ ๊ทผ
ํ ์ด๋ธ - ์ธ๋ํค ๊ฐ์ง๊ณ ์กฐ์ธ์ ์ฌ์ฉํ์ฌ ์ฐ๊ด๋ ํ ์ด๋ธ ์กฐํ - ๊ฐ์ฒด๋ ์ฐธ์กฐ๊ฐ ์กด์ฌํ๋ ๋ฐฉํฅ์ผ๋ก๋ง ์กฐํ๊ฐ ๊ฐ๋ฅํ๋ ํ ์ด๋ธ์ ์ธ๋ํค ํ๋๋ก ์๋ฐฉํฅ์ผ๋ก ์กฐํ๊ฐ ๊ฐ๋ฅ
- ๊ฐ์ฒด๋ฅผ ํ ์ด๋ธ์ ๋ง์ถ์ด ์ธ๋ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ด๊ด๊ณ๋ฅผ ์ ์ฅํ๋ฉด ํ ์ด๋ธ์ ์ ์ฅ/ ์กฐํ๋ ํธ๋ฆฌ
- ๊ทธ๋ฌ๋ ๊ฐ์ฒด์์ ์ฐธ์กฐ๋ฅผ ํตํด ๋ฐ๋ก ์ ๊ทผ์ ๋ถ๊ฐ๋ฅํ๋ฉฐ ๊ฐ์ฒด์งํฅ์ ํน์ง์ ์์ด๋ฒ๋ฆฌ๊ธฐ ์ฌ์
- ๊ฐ์ฒด๋ ์ฐธ์กฐ๋ฅผ ํตํด ์ฐ๊ด๋ ๊ฐ์ฒด๋ฅผ ๊ณ์ํด์ ํ์ํ ์ ์์, ์ด๋ฅผ ๊ฐ์ฒด ๊ทธ๋ํ ํ์์ด๋ผ ํจ
์ถ๊ตฌ ์ ์ โ ํ โ ๊ตฌ๋จ์ฃผ
๋ผ๋ ๋ฐฉํฅ์ผ๋ก ์ฐธ์กฐ๊ฐ ๋์ด ์์ ์์ ์ถ๊ตฌ ์ ์์์ ๊ตฌ๋จ์ฃผ๊น์ง ํ์ ๊ฐ๋ฅ - ๋ฐ๋ฉด SQL์ ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ ํ์ํ ์ ์๋ ๊ตฌ๊ฐ์ด ์ ํด์ง
- ์ด๋ ์ธ์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ ๋์ด์ง์ง ๋ชจ๋ฅด๋ ๊ฐ์ฒด ๊ทธ๋ํ์์๋ ์น๋ช ์
- ๋, ์ด๋ฅผ ํ์ธํ๊ธฐ ์ํด์๋ SQL์ ์ง์ ํ์ธ(๋ ผ๋ฆฌ์ ์ข ์)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๊ธฐ๋ณธ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ ๋ก์ฐ๋ฅผ ๊ตฌ๋ถ, ๊ฐ์ฒด๋ ๋์ผ์ฑ(์ฃผ์ ๊ฐ์ ๋น๊ต)๊ณผ ๋๋ฑ์ฑ(๋ด๋ถ ๊ฐ์ ๋น๊ต) ๋น๊ต๋ผ๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ
- JPA(Java Persistence API)๋ ์๋ฐ ์ง์์ ORM ๊ธฐ์ ํ์ค, ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ JDBC API ์ฌ์ด์์ ๋์
- ORM(Object-Relational Mapping)์ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋งคํํ๋ ๊ฒ์ผ๋ก ๊ฐ์ฒด์ ํ ์ด๋ธ์ ํจ๋ฌ๋ค์ ๋ถ์ผ์น๋ก ์๊ธฐ๋ ๋ฌธ์ ์ ์ ๊ฐ๋ฐ์ ๋์ ํด๊ฒฐ
- ๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ ๊ฐ๋ฐ์ ์ง์คํ ์ ์๋ ํ๊ฒฝ์ ์กฐ์ฑ
- ๊ณผ๊ฑฐ ์๋ฐ ์ง์์ EJB(Enterprise Java Beans)๋ผ๋ ๊ธฐ์ ํ์ค์ด ์กด์ฌ, ๊ทธ ์์ ์ํฐํฐ ๋น์ด๋ผ๋ ORM ๊ธฐ์ ํฌํจ
- ์ด๋ ๊ต์ฅํ ๋ณต์กํ๊ณ ๊ธฐ์ ์ ์ฑ์๋๊ฐ ๋จ์ด์ง๋ฉฐ ์๋ฐ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์์๋ง ๋์
- ์ด๋ ํ์ด๋ฒ๋ค์ดํธ๋ ์คํ์์ค ORM์ด ๋ฑ์ฅ, ์ด์ ์ํฐํฐ ๋น์ ๋ฌธ์ ์ ๋ค์ ๋ชจ๋ ํด๊ฒฐ
- EJB 3.0์์ ํ์ด๋ฒ๋ค์ดํธ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ์๋ฐ ORM ๊ธฐ์ ํ์ค์ด ์์ฑ, ์ด๊ฐ ๋ฐ๋ก JPA
- ์ฆ, JPA๋ ์๋ฐ ORM ๊ธฐ์ ์ ๋ํ API ํ์ค ๋ช ์ธ
-
์์ฐ์ฑ โ
JPA๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฐ ์ปฌ๋ ์ ์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ฏ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ์ฌ ์ ์ฅ ๊ฐ๋ฅ
์ด๋ JPA์์ ์์์ ํด์ฃผ๋ฉฐ CRUD์ ๊ฐ์ ๋ฐ๋ณต์ ์ธ ์ฝ๋๋ฅผ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฌ์ฉํ์ง ์์๋ ๋จ -
์ ์ง๋ณด์ โ
๊ฐ๋ฐ์๊ฐ ๊ธฐ์กด์ ์ ๊ฒฝ์จ์ผ ํ๋ SQL๋ฌธ, JDBC API ์ฝ๋ ๋ฑ์ JPA์์ ์ฒ๋ฆฌํ๋ฏ๋ก ์ ์ง๋ณด์ํ ์ฝ๋์ ์์ด ์ค์ด๋ฆ
-
ํจ๋ฌ๋ค์์ ๋ถ์ผ์น ํด๊ฒฐ
-
์ฑ๋ฅ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ๋ฌ๋ฒ ์ ๊ทผํ์ฌ ๊ฐ์ ธ์ฌ ๋ฐ์ดํฐ๋ค๋ ์ฌ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์ฝ๋๋ณด๋ค ๋ ๋์ ์ฑ๋ฅ์ ๋ณด์ฌ์ค
-
๋ฐ์ดํฐ ์ ๊ทผ ์ถ์ํ, ๋ฒค๋ ๋ ๋ฆฝ์ฑ
์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ด์ ์ถ์ํ๋ ๊ณ์ธต์ ์ ๊ณตํ์ฌ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข ์๋์ง ์๋๋ก ํจ
-
ํ์ค