JPA | |
์ ์ | - ๋ํ์ ์ธ ์คํ์์ค๋ก Hibernate(JPA ๊ตฌํ์ฒด์ ํ ์ข
๋ฅ) ๊ฐ ์๋ค. - Java ์ง์์์ ORM ๊ธฐ์ ํ์ค์ผ๋ก ์ฌ์ฉ๋๋ ์ธํฐํ์ด์ค ๋ชจ์ - ์ค์ ๋ก ๊ตฌํ๋ ๊ฒ์ด ์๋, ๊ตฌํ๋ ํด๋์ค์ ๋งคํ ํด์ฃผ๊ธฐ์ํด ์ฌ์ฉ๋๋ ํ๋ ์์ํฌ - SQL์ ์ง์ ์์ฑํ์ง ์์๋ ์์ฑ, ์กฐํ, ์์ , ์ญ์ ๋ฅผ ํ ์ ์๊ฒ ํด์ฃผ๋ ์ผ์ข ์ ๋ฒ์ญ๊ธฐ์ ๊ฐ์ ์ญํ ์ ์ํ |
์ฅ์ | 1) ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข
์๋์ง ์์ ex) ๋ง์ฝ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํ ๋, ์ค๋ผํดDB ๋ฅผ ์ฌ์ฉํด ๊ฐ๋ฐ์ ํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ๊ฐ๋ฐ ๋์ค DB๋ฅผ MariaDB๋ก ๋ณ๊ฒฝํ๋ค๋ฉด, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง๋ค ์ฟผ๋ฆฌ๋ฌธ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ ์ฒด๋ฅผ ์์ ํด์ผ ํ๋ค. ๊ทธ๋ ๊ธฐ๋๋ฌธ์ ์ฒ์ ์ ํํ DB๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ด๋ ต๋ค. ํ์ง๋ง JPA๋ ์ถ์ํํ ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์, ์ค์ ํ์ผ์ ์ด๋ค DB๋ฅผ ์ฌ์ฉํ์ง๋ง ์๋ ค์ค๋ค๋ฉด ์ผ๋ง๋ ์ง DB๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. 2) ๊ฐ์ฒด์งํฅ์ ํ๋ก๊ทธ๋๋ฐ JPA๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ์ค์ฌ์ ํจ๋ฌ๋ค์์์ ๊ฐ์ฒด์งํฅ์ ์ค๊ณ๊ฐ ๊ฐ๋ฅํ๋ค. ์ด๋ฅผ ํตํด ์ข ๋ ์ง๊ด์ ์ด๊ณ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์๋๋ก ๋์์ค๋ค. 3) ์์ฐ์ฑ ํฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์๋ก์ด ์ปฌ๋ผ์ด ์ถ๊ฐ๋์์ ๊ฒฝ์ฐ, ํด๋น ํ ์ด๋ธ์ ์ปฌ๋ผ์ ์ฌ์ฉํ๋ DTO ํด๋์ค์ ํ๋๋ ๋ชจ๋ ๋ณ๊ฒฝํด์ผ ํ๋ค. JPA์์๋ ํ ์ด๋ธ๊ณผ ๋งคํ๋ ํด๋์ค์ ํ๋๋ง ์ถ๊ฐํ๋ค๋ฉด ์ฝ๊ฒ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. ๋ํ SQL๋ฌธ์ ์ง์ ์์ฑํ์ง ์๊ณ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋์ํ๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์ ์ธก๋ฉด์์ ์ข๊ณ ์ฌ์ฌ์ฉ์ฑ๋ ์ฆ๊ฐํ๋ค. |
๋จ์ | 1) ๋ณต์กํ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ - ํต๊ณ ์ฒ๋ฆฌ ๊ฐ์ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ SQL๋ฌธ์ ์ฌ์ฉํ๋๊ฒ ๋์ ์๋ ์์ - JPA์์๋ Native SQL์ ํตํด ๊ธฐ์กด SQL๋ฌธ์ ์ฌ์ฉ ํ ์ ์์ง๋ง, ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข ์๋๋ค๋ ๋จ์ ์ด ์๊น - ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด์๋ SQL๊ณผ ์ ์ฌํ JPQL์ ์ฌ์ฉํ๋ฉด ๋จ 2) ์ฑ๋ฅ ์ ํ ์ํ - ๊ฐ์ฒด๊ฐ ๋งคํ ์ค๊ณ๋ฅผ ์๋ชปํ์ ๊ฒฝ์ฐ, ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ - ์๋์ผ๋ก ์์ฑ๋๋ ์ฟผ๋ฆฌ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์๋ํ์ง ์์ ์ฟผ๋ฆฌ๋ก ์ธํ ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ์ฑ 3) ํ์ต ์๊ฐ - JPA๋ฅผ ์ ๋๋ก ์ฌ์ฉํ๊ธฐ๊น์ง ํ์ต์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆผ |
- Object-relational mapping ์ ์ฝ์
- ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ๋งคํ(์ฐ๊ฒฐ) ํด์ฃผ๋ ๊ฒ์ ๋งํจ
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ณ , ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ ์ด๋ธ์ ์ฌ์ฉํจ
- ๊ฐ์ฒด ๋ชจ๋ธ๊ณผ ๊ด๊ณํ ๋ชจ๋ธ ๊ฐ์ ๋ถ์ผ์น๊ฐ ์กด์ฌํจ
- ORM์ ํตํด ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก SQL์ ์๋์ผ๋ก ์์ฑํ์ฌ ๋ถ์ผ์น๋ฅผ ํด๊ฒฐํ๋ค.
Q1. JPA์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
A1.
JPA ๋ Java ์ง์์์ ORM ๊ธฐ์ ํ์ค์ผ๋ก ์ฌ์ฉ๋๋ ์ธํฐํ์ด์ค ์ ๋๋ค.
SQL์ ์ง์ ์์ฑํ์ง ์์๋ ์์ฑ, ์กฐํ, ์์ , ์ญ์ ๋ฅผ ํ ์ ์๊ฒ ํด์ฃผ๋ ์ผ์ข ์ ๋ฒ์ญ๊ธฐ์ ๊ฐ์ ์ญํ ์ ์ํํฉ๋๋ค.
Q2. ๋ํ์ ์ธ ๊ตฌํ์ฒด๋ก๋ ๋ญ๊ฐ ์์๊น์?
A2.
Hibernate ๊ฐ ์์ต๋๋ค.
Q3. ์ ๊ตฌํ์ฒด๋ก ํ์ด๋ฒ๋ค์ดํธ๋ฅผ ๋ง์ด ์ฌ์ฉํ ๊น์?
A3.
JPA๋ ํ์ด๋ฒ๋ค์ดํธ๋ฅผ ์ถ์ํํ ์ธํฐํ์ด์ค ์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๊ตฌํ์ฒด์ ๋นํด JPA์ ํธํ์ด ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ํ Spring Boot Starter ์ Data JPA ์์กด์ฑ์๋ ํ์ด๋ฒ๋ค์ดํธ ๊ตฌํ์ฒด๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจ๋์ด ์์ด ๋ง์ด ์ฌ์ฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
<Reference>
https://livenow14.tistory.com/70
[DB] ํ์ด๋ฒ๋ค์ดํธ(Hibernate)๋?
ORM ๊ธฐ์ ์ ๋ํ ๋ช ์ธ์ธ JPA(Java Persistence API)์ ๊ตฌํ์ฒด์ ํ ์ข ๋ฅ JPA์ ๊ตฌํ์ฒด์ด๋ฏ๋ก JPA์ ํน์ง์ ํจ๊ป ์ ๋ฆฌํ์ด์. Hibernate๋? ํ์ด๋ฒ๋ค์ดํธ๋ ์๋ฐ ์ธ์ด๋ฅผ ์ํ ORM ํ๋ ์์ํฌ์์. JPA์ ๊ตฌํ์ฒด
livenow14.tistory.com
[QueryDsl] ๊ธฐ๋ณธ ์กฐ๊ฑด (0) | 2022.05.22 |
---|
๋๊ธ ์์ญ