๐[Spring] Spring Data JPA๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)๊ฐ ์๋ ๋ชจ๋(Module)์ธ๊ฐ์?
-
Spring Data JPA๋ Spring Data ํ๋ก์ ํธ์ ํ์ ๋ชจ๋(Module)๋ก, ์ด๋ฅผ ๋ชจ๋(Module)์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ด ๋ ์ ํํฉ๋๋ค.
- ๋ค๋ง, ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)๋ผ๋ ์ฉ์ด์๋ ์ข ์ข ํผ์ฉ๋์ด ์ฌ์ฉ๋๊ณค ํฉ๋๋ค.
- ๋ ์ฉ์ด ๊ฐ์ ์ฝ๊ฐ์ ์ฐจ์ด๊ฐ ์์ง๋ง, ๊ฐ๋ฐ์๋ค์ด Spring Data JPA๋ฅผ ์ด์ผ๊ธฐํ ๋๋ ์ฃผ๋ก ๋ชจ๋(Module)๋ก์์ ์๋ฏธ๋ฅผ ๊ฐ์กฐํฉ๋๋ค.
1๏ธโฃ ๋ชจ๋(Module)๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)์ ์ฐจ์ด.
1๏ธโฃ ๋ชจ๋(Module)
- ๋ชจ๋(Module)์ ํน์ ๊ธฐ๋ฅ์ด๋ ๋ชฉ์ ์ ์ค์ฌ์ผ๋ก ๊ตฌ์ฑ๋ ์ปดํฌ๋ํธ๋ฅผ ์๋ฏธํ๋ฉฐ, ๋ ํฐ ์์คํ ์ ์ผ๋ถ๋ถ์ผ๋ก ๋์ํฉ๋๋ค.
- Spring Data JPA๋ Spring Data๋ผ๋ ๋ ํฐ ํ๋ก์ ํธ์ ์ผ๋ถ๋ถ์ด๋ฉฐ, ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต์์ JPA(Java Persistence API)์ Hibernate๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์ด ์ ์์ Spring Data JPA๋ ๋ชจ๋(Module)๋ก ๋ณผ ์ ์์ต๋๋ค.
๐โโ๏ธ ๋ชจ๋๊ณผ ์ปดํฌ๋ํธ๋ฅผ ๋ ๊ณ ๋ธ๋ก์ ๋น์ ํด๋ณด๋ฉด?!
๐โโ๏ธ ์ํํธ์จ์ด ๊ณตํ์์์ ์ปดํฌ๋ํธ.
๐โโ๏ธ ์ํํธ์จ์ด ๊ณตํ์์์ ๋ชจ๋.
2๏ธโฃ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ์งํฉ์ผ๋ก, ๊ฐ๋ฐ์๊ฐ ํน์ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๋์์ค๋๋ค.
- Spring Data JPA๋ ์์กด์ฑ์ผ๋ก ์ถ๊ฐํ๋ฉด ํ๋ก์ ํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ์งํฉ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)๋ก ๋ณผ ์๋ ์์ต๋๋ค.
- ํ์ง๋ง, ๋ ํฐ ๋งฅ๋ฝ์์ ๋ชจ๋(Module)์ ๋ ํฐ ์์คํ ์ ์ผ๋ถ๋ก ๋์ํ๋ ๋ฐ๋ฉด, ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ์งํฉ์ด๋ผ๋ ์ ์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
๐โโ๏ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)์ ํ๋ ์์ํฌ(Framework)์ ์ฐจ์ด์ .
2๏ธโฃ Spring Data ํ๋ก์ ํธ์ ๊ตฌ์กฐ.
-
Spring Data๋ ๋ฐ์ดํฐ ์ ๊ทผ์ ๋จ์ํํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ํ๋ก์ ํธ๋ก, ๋ค์ํ ๋ฐ์ดํฐ ์ ์ฅ์์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ์ฌ๋ฌ ๋ชจ๋(Module)๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
- ์ด ํ๋ก์ ํธ๋ ๋ค์ํ ๋ชจ๋(Module)์ ํฌํจํ๊ณ ์์ผ๋ฉฐ, ๊ฐ ๋ชจ๋(Module)์ ํน์ ๋ฐ์ดํฐ ์ ์ฅ์์ ๋ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด
- Spring Data JPA : JPA๋ฅผ ์ฌ์ฉํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ์ ์ํ ๋ชจ๋
- Spring Data MongoDB : MongoDB๋ฅผ ์ฌ์ฉํ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ์ ์ํ ๋ชจ๋
- Spring Data Redis : Redis ๋ฐ์ดํฐ ์ ์ฅ์ ์ ๊ทผ์ ์ํ ๋ชจ๋
- Spring Data Elasticsearch : Elasticsearch ์ ๊ทผ์ ์ํ ๋ชจ๋
- ์๋ฅผ ๋ค์ด
- ์ด ํ๋ก์ ํธ๋ ๋ค์ํ ๋ชจ๋(Module)์ ํฌํจํ๊ณ ์์ผ๋ฉฐ, ๊ฐ ๋ชจ๋(Module)์ ํน์ ๋ฐ์ดํฐ ์ ์ฅ์์ ๋ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์ด์ฒ๋ผ Spring Data JPA๋ Spring Data ํ๋ก์ ํธ์ ์ฌ๋ฌ ๋ชจ๋ ์ค ํ๋๋ก, JPA(Java Persistence API)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Relational Database)์์ ์ํธ์์ฉ์ ๋จ์ํํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ญํ ์ ํฉ๋๋ค.
3๏ธโฃ Spring Data JPA๋ฅผ ๋ชจ๋(Module)๋ก ๋ณด๋ ์ด์ .
-
Spring ์ํ๊ณ์ ์ผ๋ถ๋ถ
- Spring Data JPA๋ Spring Data ํ๋ก์ ํธ์ ํ์ ๋ชจ๋๋ก, Spring์ ์ผ๊ด๋ ๊ตฌ์กฐ์ ์คํ์ผ์ ๋ฐ๋ฅด๋ฉฐ, ๋ค๋ฅธ Spring ๋ชจ๋๊ณผ ์์ฐ์ค๋ฝ๊ฒ ํตํฉ๋ฉ๋๋ค.
-
ํน์ ๊ธฐ๋ฅ์ ์ง์ค
- Spring Data JPA๋ JPA๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ๊ธฐ๋ฅ์ ํนํ๋์ด ์์ผ๋ฉฐ, ์ด๋ฌํ ์ญํ ์ ์ด์ ์ ๋ง์ถ ๋ ๋ฆฝ์ ์ธ ๋ชจ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
-
์์กด์ฑ ๊ด๋ฆฌ
- Maven ๋๋ Gradle์ ์์กด์ฑ์ผ๋ก ์ถ๊ฐํ ๋, Spring Data JPA ๋ชจ๋์ ์ถ๊ฐํจ์ผ๋ก์จ JPA ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต์ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
4๏ธโฃ ์์ฝ.
- Spring Data JPA๋ Spring Data ํ๋ก์ ํธ์ ํ์ ๋ชจ๋๋ก์, JPA ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ์ ๊ทผ์ ์ฝ๊ฒ ํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์ด ๋ชจ๋์ ๋ ํฐ Spring Data ์ํ๊ณ์ ์ผ๋ถ๋ก ๋์ํ๋ฉฐ, JPA๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ์์ฉ์ ๋จ์ํํ๋ ์ญํ ์ ํฉ๋๋ค.
- ๊ฐ๋ฐ์๋ค์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ชจ๋์ด๋ผ๋ ์ฉ์ด๋ฅผ ํผ์ฉํด ์ฌ์ฉํ๊ธฐ๋ ํ์ง๋ง, Spring Data JPA๋ ์๋ฐํ ๋งํ๋ฉด ๋ชจ๋๋ก ๋ณด๋ ๊ฒ์ด ๋ง์ต๋๋ค.