-
ORM์ด๋?
- ORM(Object Relational Mapping) ์ ์ฝ์
- ๊ฐ์ฒด ์งํฅ์ class์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Relational Database)๋ฅผ ๋งคํ์ํจ๋ค๋ ์ถ์ํ๋ ๊ฐ๋
- ๊ธฐ์ ์ ์ผ๋ก๋ ๊ฐ์ฒด๋ฅผ RDB ํ ์ด๋ธ์ SQL๋ฌธ์ ์ผ์ผ์ด ์์ฑํ์ง ์๊ณ ๋ ์๋์ผ๋ก ์์ํ ํด์ฃผ๋ ๊ฒ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ ๊ตฌ์กฐ์ ๊ฐ์ฒด ์งํฅ์์ ํด๋์ค๋ก ์ค๊ณํ๋ ๋ชจ์ต์ด ์ ์ฌํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ฒด ์งํฅ์ ํ ๋ฒ์ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ ์๊ฐ์์ ์์
- ํน์ ํ ์ธ์ด์ ์ข ์์ ์ธ ๊ฐ๋ ์ด ์๋
์ฅ์
- SQL๋ฌธ์ด ์๋ Method๋ฅผ ํตํด DB๋ฅผ ์กฐ์→ ๊ฐ๋ฐ์๋ ๊ฐ์ฒด ๋ชจ๋ธ์ ์ด์ฉํ์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌ์ฑํ๋๋ฐ๋ง ์ง์คํ ์ ์์.(๋ด๋ถ์ ์ผ๋ก๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ์ฌ DB๋ฅผ ์กฐ์ํ์ง๋ง ๊ฐ๋ฐ์๊ฐ ์ด๋ฅผ ์ ๊ฒฝ ์ฐ์ง ์์๋๋จ)
- Query์ ๊ฐ์ด ํ์ํ ์ ์ธ๋ฌธ, ํ ๋น ๋ฑ์ ๋ถ์์ ์ธ ์ฝ๋๊ฐ ์ค์ด๋ค์ด, ๊ฐ์ข ๊ฐ์ฒด์ ๋ํ ์ฝ๋๋ฅผ ๋ณ๋๋ก ์์ฑํ์ฌ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์
- ๊ฐ์ฒด์งํฅ์ ์ธ ์ฝ๋ ์์ฑ์ด ๊ฐ๋ฅ
- ๋งคํํ๋ ์ ๋ณด๊ฐ Class๋ก ๋ช ์ ๋์๊ธฐ ๋๋ฌธ์ ERD๋ฅผ ๋ณด๋ ์์กด๋๋ฅผ ๋ฎ์ถ ์ ์๊ณ ์ ์ง๋ณด์ ๋ฐ ๋ฆฌํฉํ ๋ง์ ์ ๋ฆฌ
- ex) ๊ธฐ์กด ๋ฐฉ์์์ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค๊ฐ PostgreSQL๋ก ๋ณํํ๋ค๊ณ ๊ฐ์ ํด๋ณด๋ฉด, ์๋ก ์ฟผ๋ฆฌ๋ฅผ ์ง์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์๊น. ์ด๋ฐ ๊ฒฝ์ฐ์ ORM์ ์ฌ์ฉํ๋ค๋ฉด ์ฟผ๋ฆฌ๋ฅผ ์์ ํ ํ์๊ฐ ์์
JPA๋?
- Java Persistence API์ ์ฝ์, ์๋ฐ์ ORM์ ์ํ ํ์ค ๊ธฐ์
- ์๋ฐ ์ดํ๋ฆฌ์ผ์ด์ ์์ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ ์ํ ํ์ค(์ธํฐํ์ด์ค)
- ๊ธฐ์กด์ JDBC ๋ฑ์ ์ด์ฉํด์ ์ง์ ๊ตฌํํ๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ด๋ จ ์์ ์ JPA ๊ณ์ธต์์ ์ฒฏ๋ฆฌ
- JPA ์์ฒด๋ ์คํ์ ๋ถ๊ณผํ๋ฏ๋ก ์ด๋ฅผ ๊ตฌํํ ์ ํ์ด๋ ํ๋ ์ ์ํฌ์ ์กด์ฌ๊ฐ ํ์์ ์
- ex) Hibernate : ORM ํ๋ ์์ํฌ, EclipseLink….
JPA ์ฌ์ฉ์ ์ฅ์ (ORM์ ์ฅ์ ๊ณผ ์ ์ฌ)
- SQL ์ฟผ๋ฆฌ๋ฅผ ํ๋ํ๋ ์์ฑํ ํ์๊ฐ ์์ด ์ฝ๋๋์ ๊ฐ์
- ๊ฐ๋ ์ฑ์ด ์ข์
- ๊ฐํธํ๊ฒ ์์ ๊ฐ๋ฅ (์ ์ง๋ณด์๊ฐ ์์)
- DB ๋ฒค๋(ํ์ฌ)์ ๋ ๋ฆฝ์ ์ธ ๊ฐ๋ฐ ๊ฐ๋ฅ
- ๋งคํ๋ ๊ด๊ณ๋ฅผ ์ด์ฉํด์ SQL์ ์์ฑํ๊ณ ์คํ → SQL์ด ์๋ ๊ฐ์ฒด ์ค์ฌ์ ๊ฐ๋ฐ
- ํจ๋ฌ๋ค์์ ๋ถ์ผ์น๋ฅผ ํด๊ฒฐ (์๋ฐ๋ ์์์ ์ง์ํ์ง๋ง db์์๋ ์ง์ ์ํ๋ ์ด๋ฐ ๋ฌธ์ )
JPA ์ฌ์ฉ์ ๋จ์
- ๋ฐฐ์์ผ ํ๋ ๊ธฐ๋ฅ์ด ๋ง์
- ๊ทผ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด ์งํฅ ์ค๊ณ๊ฐ ๋ฐ์๋์ด์ผ ํจ
- ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ๋ ฅํจ์ ํ์ฉํ ์ ์์ (native SQL ์ฌ์ฉํ ์๋ ์์ผ๋, ์ด ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ๋ฆฝ์ ์ธ ๊ฐ๋ฐ์ด ๋ถ๊ฐ๋ฅ
JPA๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์ ๊ฐ๋ฐ ๊ตฌ์กฐ
Spring Data JPA๋?
- JPA๋ฅผ ์คํ๋ง์์ ๊ฐ๋ฐํ ์ ์๋๋ก ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- JPA๋ฅผ ์ด์ฉํ ๊ตฌํ์ฒด๋ฅผ ๋ ์ถ์ํ์์ผ ๋ ์ฝ๊ฒ JPA๋ฅผ ์ด์ฉํด ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ ์ ์๊ฒ ํด์ค
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ข ์์ ์ธ SQL๋ฌธ ์์ด๋ ๊ฐ๋ฐ์ด ๊ฐ๋ฅ
- ์คํ๋ง ํ๋ ์์ํฌ์ ์ฅ์ ์ ๊ธฐ์กด์ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ค๊ณผ์ ํตํฉ์ด ๊ฐ๋ฅํ๋ค๋ ์ → ์ด๋ฅผ ์ํ ์ด๋ํฐ๋ค์ ์ง์ (๊ฐ๋ฐ์ ํธ์๋ฅผ ๋๋ ์ถ๊ฐ ๊ธฐ๋ฅ๋ค์ด ๋ง์)
<์ฐธ๊ณ ,์ธ์ฉ>
๐ ์คํํธ ์คํ๋ง ๋ถํธ - ๊ตฌ๋ฉ๊ฐ๊ฒ ์ฝ๋ฉ๋จ
[JPA] JPA๋? Spring Data JPA๋ก ๊ฐ๋จ ์์ ํ๋ก์ ํธ ๊ตฌํ
'๐ญ Study > : Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ