๐๐ป Spring Data JPA
- ํด๋ผ์ด์ธํธ๊ฐ ์ ์กํ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์์ , ์กฐํ, ์ญ์ ๋ฅผ ์ข ๋ ์ฝ๊ฒ ํจ
- Spring Data ํจ๋ฐ๋ฆฌ ๊ธฐ์ ์ค ํ๋๋ก์จ JPA ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ์ก์ธ์ค ๊ธฐ์ ์ ์ข ๋ ์ฝ๊ฒ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ ์๊ฐ ๋จ์ถ
๐JPA vs Hibernate ORM vs Spring Data JPA
โช๏ธ JPA : ๊ธฐ์ ๋ช ์ธ
- Java ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ ํด ๋์ ํ์ค ์คํ
- ORM ๊ธฐ์ ํ์ค์ผ๋ก ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค ๋ชจ์
→ ์ด ๊ธฐ์ ์ ๋ฌด์์ด๊ณ ์ด ๊ธฐ์ ์ ์ด๋ ๊ฒ ๊ตฌํํด์ ์ฌ์ฉํ๋ฉด ๋ผ ๋ฅผ ์๋ ค์ฃผ๋ ๊ฒ
(1) ๋ฐ๋ณต์ ์ธ CRUD SQL ์ฒ๋ฆฌ
- JPA๊ฐ ์ ๊ณตํ๋ API๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด๋ฅผ DB์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ๋ ์ง์ SQL ์์ฑํ์ง ์์๋ ๋จ
- ๊ด๊ณ ๋งคํ์ด ์ด๋ ต๊ฑฐ๋ ์ฑ๋ฅ์ ๋ํ ์ด์ ์ฐ๋ ค๊ฐ ์๋ค๋ฉด SQL ์ง์ ์์ฑ ๊ฐ๋ฅ
(2) ๊ฐ์ฒด ์ค์ฌ์ผ๋ก ๊ฐ๋ฐ ๊ฐ๋ฅ
- ์์ฐ์ฑ์ด ์ข์์ง๊ณ ์ ์ง๋ณด์ ์์
(3) ํจ๋ฌ๋ค์ ๋ถ์ผ์น, SQL ์์กด์ฑ ๋ฑ ํด๊ฒฐ
โช๏ธ ORM (Object-Relational Mapping) : ๊ฐ์ฒด ๊ด๊ณ ๋งคํ
- ๊ฐ์ฒด์ ๊ด๊ณํ DB๋ฅผ ๋งคํ
- ๊ฐ์ฒด๋ ๊ฐ์ฒด๋๋ก ์ค๊ณํ๊ณ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋๋ก ์ค๊ณ
→ ORM ํ๋ ์์ํฌ๊ฐ ์ค๊ฐ์์ ๋งคํํด์ค
โช๏ธ Hibernate ORM : JPA์ ๊ตฌํ์ฒด
- JPA๋ผ๋ ํ์ค ์คํ์ ๊ตฌํํ ๊ตฌํ์ฒด
- ORM ํ๋ ์ ์ํฌ ์ค ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ฑ์ํ ํ๋ ์์ํฌ
- ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๊ด๊ณํ DB๋ฅผ ์ฌ์ฉํด๋ ๊ฐ์ฒด ์งํฅ ๊ฐ๋ฐ์ ์ง์ค ๊ฐ๋ฅ
โช๏ธ Spring Data JPA : JPA๋ฅผ ํธํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํ ๋ชจ๋
: JPA ์คํ์ ๊ตฌํํ ๊ตฌํ์ฒด์ API(์ผ๋ฐ์ ์ผ๋ก Hibernate ORM)์ ์กฐ๊ธ ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋
๐Spring Data JDBC → Spring Data JPA๋ก
โ ์ํฐํฐ ํด๋์ค๋ฅผ Spring Data JPA์ ๋ง๊ฒ ์์
- JDBC์์ ์ฌ์ฉํ ์ ๋ํ ์ด์ ์ ๊ฑฐํ๊ณ JPA์ ๋ง๋ ์ ๋ํ ์ด์ ์ถ๊ฐ
โก Repository ์ธํฐํ์ด์ค ๊ตฌํ
โข Service ํด๋์ค ๊ตฌํ
โฃ ๊ธฐํ ๊ธฐ๋ฅ ์ถ๊ฐ๋ก ์ธํด ์์ ๋ฐ ์ถ๊ฐ๋ ์ฝ๋
๐น JPQL์ ํตํ ๊ฐ์ฒด ์งํฅ ์ฟผ๋ฆฌ
- JPQL์ด๋ผ๋ ๊ฐ์ฒด ์งํฅ ์ฟผ๋ฆฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด ํ ์ด๋ธ ์กฐํ ๊ฐ๋ฅ
- JPQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋์์ผ๋ก ์กฐํํ๋ ๊ฒ์ด ์๋ ์ํฐํฐ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋์์ผ๋ก ์กฐํ
→ JPA๊ฐ ๋ด๋ถ์ ์ผ๋ก JPQL์ ๋ถ์ํด์ ์ ์ ํ SQL์ ๋ง๋ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์กฐํ
→ ์กฐํํ ๊ฒฐ๊ณผ๋ฅผ ์ํฐํฐ ๊ฐ์ฒด๋ก ๋งคํํ ๋ค ๋ฐํ
* SQL ์ฟผ๋ฆฌ ๋ฌธ
: SELECT * FROM COFFEE WHERE coffee_id = :coffeeId
ํ
์ด๋ธ๋ช
* : ๋ชจ๋ ํ๋ ์กฐํ
* JPQL ์ฟผ๋ฆฌ๋ฌธ
: SELECT c FROM Coffee c WHERE c.coffeeId = coffeeId
์ํฐํฐํด๋์ค๋ช
c : Coffee๋ฅผ ์๋ฏธํ๋ ๋ณ์นญ์ด์ ๋ชจ๋ ํ๋๋ฅผ ์กฐํํ ์ ์์
SELCET c๋ ์๋ต ํ ์๋ ์์ !
๐น ๋ค์ดํฐ๋ธ SQL์ ํตํ ์กฐํ
- JPA์์๋ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ ์ฌ์ฉํ ์ ์์
- nativeQuery ์ ํธ๋ฆฌ๋ทฐํธ ๊ฐ์ true๋ก ์ค์ ํ๋ฉด SQL ์ฟผ๋ฆฌ๋ ์ ์ฉ๋จ
'Study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] ๋จ์ํ ์คํธ (0) | 2022.07.12 |
---|---|
[TIL] ํธ๋์ญ์ (0) | 2022.07.12 |
[TIL] JPA ๋งคํ (0) | 2022.07.05 |
[TIL] JPA (0) | 2022.07.05 |
[TIL] Spring Data JDBC ๊ตฌํ (0) | 2022.07.04 |