๐ง๐ป๐ป 1. JPA?
- ์ค๋์ ํค์๋ JPA๋ Java Persistence API์ ์ค์๋ง๋ก "์๋ฐ ์ง์์ ORM ํ์ค ๊ธฐ์ "์ด๋ผ๊ณ ํ๋ค.
- Java ๊ฐ์ฒด์ ์์์ฑ์ ์ํ ์๋ฐ์ ํ์คํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋งํ๋ ๊ฒ
- ๊ทธ๋ผ ๋ ORM์ ๋ญ๋๋ฉด Object-relationla Mapping ์ผ๋ก ๊ฐ์ฒด๋ ๊ด๊ณํ DB๋ฅผ ๋งคํํด์ฃผ๋ ํ๋ ์ ์ํฌ๋ค
- ๊ทธ๋ผ ์ฌ๊ธฐ์ ๋ ๊ด๊ณํ DB๋ ?
- 2์ฐจ์ ํ ์ด๋ธ(Table) ํํ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ, ํค์ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์ข ์์ฑ์ ๊ด๊ณ๋ก ํํํ๋๊ฒ์ด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ง์
- ํ์ฌ ๋ง์ด ์ฌ์ฉ๋๋ Oracle, MySQL, SQL Server๋ฑ์ด ๋ค ๊ด๊ณํ ๋ฐ์ดํฐ ๋ชจ๋ธ
๐ 2. ๊ทธ๋ผ JPA๋ฅผ ์ ์ฌ์ฉํ ๊น?
์์ฆ ์๋ก ๋ฐฐ์ฐ๋ ๊ฐ๋ ์์์ ๋ง๋ฌ์๋ ๋ด ๋ฃจํด์ ์ด๊ฒ ๋ญ๋ฐ ๐ ์ด๊ฑฐ ์ ์ฐ๋๊ฑด๋ฐ๋ก ์ด์ด์ง๋ค
๋ฃจํด์ ๋ง์ถฐ์ .. JPA๋ฅผ ์ ์ฌ์ฉํ๋๋ฉด !
1๏ธโฃ ์ฟผ๋ฆฌ๋ฌธ ์ฌ์ฉ ์์ด ์๋ฐ์ฝ๋๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฑด๋๋ฆด ์ ์๊ฒ ํด์ค
Presistence Framwork(์์์ฑ ํ๋ ์์ํฌ)๋ ํฌ๊ฒ SQL Mapper ์ ORM์ผ๋ก ๋๋๋๋ฐ,
ORM์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์๋ฐ ๊ฐ์ฒด๋ก ๋งคํํจ์ผ๋ก์จ ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก SQL์ ์๋์ผ๋ก ์์ฑํด์ฃผ๊ณ
SQL Mapper๋ SQL์ ๋ช
์ํด์ฃผ์ด์ผํ๋ค.
SQL ๋ฌธ์ฅ์ผ๋ก ์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃจ๋ SQL Mapper( ex. MyBatis, jdbcTemplates)๊ฐ ์๊ณ ,
๊ฐ์ฒด๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃจ๋ Presistence API(ex. JPA, Hibrenate)๊ฐ ์๋๊ฒ์
2๏ธโฃ ํต์ผ๋ ์๋ฐ ์ฝ๋๋ก ์ฌ๋ฌ ๋ค๋ฅธ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉ ํ ์ ์๊ฒ ํด์ค
PostgreSQL์ ์ฌ์ฉํ๋ค๊ฐ ์ด๋ ํ ์ด์ ๋ก Mysql์ ์ฌ์ฉํด์ผํ ๋ ์๋ก ๋ค๋ฅธ ์ฟผ๋ฆฌ ๋ฌธ๋ฒ์ผ๋ก ์ด๋ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํ ์ ์๋๋ฐ
JPA๋ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์ฒด๊ณ์ ์ฝ๋งค์ด์ง ์๊ณ , ์์์ฑ์ ๊ตฌํํจ
(ex. ๋ง์ด๋ฐํฐ์ค์์ DBMS๋ง๋ค ๋ค๋ฅผ ์ ์๋ ์๋ฃํํ๋ SQL๋ฐฉ์ธ์ ์์ ๋ฐ์ํด์ฃผ์ด์ผํจ)
3๏ธโฃ ๊ฐ์ฒด์งํฅ์ ์์์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฉ์ํฌ ์ ์๋๋ก ํด์ค
Java์ธ์ด๋ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ก ์์ํ์ ์ ์ ์ธํ ๋ชจ๋ ๊ฒ์ด ๊ฐ์ฒด์ด์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ SQL์ด๋ผ๋ ํน์ํ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ
์์/๋คํ์ฑ ๊ฐ์ ๊ฐ๋ ์ด ์๊ธฐ๋๋ฌธ์ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์งํฅํ๋ ์ ์ด ๋ฌ๋ผ์ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ฌ๋ค์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ๋ค.
์๋ฐ์ธ์ด๋ ๊ฐ์ฒด์งํฅ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ ์ค์ฌ์ผ๋ก ๊ตฌ์กฐํ ๋์ด์๊ธฐ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ
๊ทผ๋ฐ JPA๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ์ ์ฃผ๊ณ ์ ํ ๋ ์ผ์ผํ sql์ ์์ ํ์ง์๊ณ JPA ๊ฐ์ฒด๋ง ๋ฐ๊พธ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์๊ฐ ์ฌ์์ง
๐ ORM๊ณผ ์์์ฑ์ ์กฐ๊ธ ๋ ์์๋ณด์
๊ฐ์ฒด๊ด๊ณํ๋งคํ(ORM)์, ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ์ ํธํ๋์ง ์๋ ๋ฐ์ดํฐ๋ ๋ณํํ๋ ๊ธฐ๋ฒ
- ORM์ ๋ณํ ๊ณผ์ ์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ด์์ ์ฌ์ฉ๋ ์ ์๋ ๊ฐ์ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๋ค.
- SQL์ ๊ฐ๋ฐ์๊ฐ ์ง์ ๊ด๋ฆฌํ ํ์๊ฐ ์์ผ๋ฉฐ, SQL์ฒ๋ผ ์ ์ฐจ์ ์ธ ์ฝ๋ ๋์ ๊ฐ์ฒด ์งํฅ ์ ์ธ ์ฝ๋๋ก ์๋ํด ๋น์ฆ๋์ค ๋ก์ง์ ์ง์ค ํ๋๋ก ํด์ค
- ORM์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌํ๋์ด ํด๋น ๊ฐ์ฒด๋ฅผ ์ฌํ์ฉ ํ ์ ์์ด ์ฌ์ฌ์ฉ์ฑ์ด ๋๊ณ , ์ ์ง๋ณด์๊ฐ ํธ๋ฆฌํ๋ค.
์์์ฑ(Persistence)๋, ๊ฐ๋จํ๊ฒ ๋งํด์ ์ฌ๋ผ์ง์ง ์๋ ๋ฐ์ดํฐ / ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ์๊ตฌ์ ์ฅ์์ ์ ์ฅ๋ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ปํจ.
- Java ๊ฐ์ฒด์ ์์์ฑ์ ์ํ๊ฒ์ด๋ผ๋ ๋ง์ Java ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํด ๋ฐ์ดํฐ๋ฅผ ์์ํ ํ๋ค๋๊ฒ์ด๊ณ , ๊ทธ ๋ฐฉ์์ผ๋ก ORM์ ์ฌ์ฉํ๋๊ฒ์ด๋ค
+) ์์์ฑ ์ปจํ ์คํธ (Persistence Context)
- ์ํฐํฐ ๋งค๋์ ์ ์ถ์ํ๋ ๊ณต๊ฐ์ ์์์ฑ ์ปจํ ์คํธ๋ผ๊ณ ํจ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ์๊ตฌ ์ ์ฅ์์ Entity(์๋ฐ ๊ฐ์ฒด)๋ฅผ CRUDํ๊ธฐ ์ ์ ์ ์ฅํ๋ ํ๊ฒฝ์ ๋ปํ๋ค.
'๐ฝ Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring | ์์์ฑ์ด ๋ญ๋ฐ (1) | 2022.12.01 |
---|---|
Spring | Annotation์ด ๋ญ๋ฐ (0) | 2022.11.30 |
Spring Introduction 03 | Rest ๊ทธ๋ฆฌ๊ณ Put/Patch (0) | 2022.11.30 |
Spring Introduction 02 | ์คํ๋ง ํด๋ ๊ตฌ์กฐ (1) | 2022.11.29 |
Spring Introduction 01 | ์คํ๋ง ์ ๋ฌธ(1) (4) | 2022.11.27 |