์คํ๋ง ๋ถํธ, ์ค๋ฌด์์ ์ ์ฐ๊ณ ์ถ๋ค๋ฉด?
๊น์ด์๋ ์ค๊ณ์ ๊ฐ๋ฐ์ ๊ฒฝํํด ๋ณด์ธ์.
๐ฉ ๋ณธ ๊ฐ์๋ ๋ก๋๋งต ๊ณผ์ ์
๋๋ค.
- ๋ณธ ๊ฐ์๋ ์๋ฐ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ค์ ์ฝ์ค๋ฅผ ์์ํ๋ ์ฒซ ๊ฐ์์
๋๋ค. ์คํ๋ง ๋ถํธ์ JPA ์ค๋ฌด ์์ ์ ๋ณต ๋ก๋๋งต์ ์ฐ์ ํ์ธํด์ฃผ์ธ์. (๋งํฌ)
์ค์ ! ์คํ๋ง ๋ถํธ์ JPA ํ์ฉ

์คํ๋ง ๋ถํธ(Spring Boot)๋ ๋ณต์กํ๊ณ ์ด๋ ค์ด ์คํ๋ง ํ๋ ์์ํฌ๋ฅผ ๊ฐ๊ฒฐํ๊ณ , ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ค๋๋ค. ์ฌ๊ธฐ์ JPA๊ฐ ์ ๊ณตํ๋ ๊ฐ๋ ฅํ ORM ๊ธฐ์ ์ ๋ํ๋ฉด, ๋์ ์์ฐ์ฑ์ ์ ์งํ๋ฉด์ ๋ฏผ์ฒฉํ๊ฒ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. ์ด๋ฐ ์ ๋ค ๋๋ฌธ์ ์๋ฐ ์ง์์์๋ ์คํ๋ง ๋ถํธ์ JPA๋ฅผ ํ์ฉํด์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ๊ฒ์ด ์ธ๊ณ์ ์ธ ์ถ์ธ์
๋๋ค.
๊ฐ์ ๋ชฉํ
์คํ๋ง ๋ถํธ์ JPA๋ฅผ ์๊ณ ์์ด๋, ์ค๋ฌด์์ ์ด ๊ธฐ์ ๋ค์ ํ์ฉํด์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ค๊ณํ๊ณ , ๊ฐ๋ฐํ๋ ๊ฒ์ ๋ ๋ค๋ฅธ ์ฐจ์์ ๋ฌธ์ ์
๋๋ค. ๋ณดํต ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ค์ ๊ฐ๋ฐ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค.
์ผ๋ฐ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ ๊ณผ์
- ์๊ตฌ์ฌํญ ๋ถ์
- ๋๋ฉ์ธ๊ณผ ํ
์ด๋ธ ์ค๊ณ
- ์ํคํ
์ฒ ๊ตฌ์ฑ
- ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง ๊ฐ๋ฐ
- ์น ๊ณ์ธต ๊ฐ๋ฐ
- ํ
์คํธ
- ์ฑ๋ฅ ์ต์ ํ
์ด ๊ฐ์๋ ๊ฒ์ํ ๊ฐ์ ๋จ์ํ ์์ ๋ฅผ ๋์ด์, ์ค๋ฌด์ ๋ณต์กํ ์ํฉ์ ์ฌํํ ์ ์๋ ๋์ด๋ ์๋ ์์ ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๊ตฌ์ฌํญ ๋ถ์๋ถํฐ ์ค๊ณ, ๊ฐ๋ฐ, ํ
์คํธ, ์ฑ๋ฅ ์ต์ ํ๊น์ง ์ด ๋ชจ๋ ๊ณผ์ ์ ์์๋๋ก ์งํํฉ๋๋ค. ์ด๋ ๊ฒ ์ค๋ฌด์ ๊ฐ๊น์ด ์์ ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ฒ์๋ถํฐ ๋๊น์ง ํจ๊ป ์ค๊ณํ๊ณ ๊ฐ๋ฐํด๋ณด๋ฉด, ์ด ๊ณผ์ ์์์ ์คํ๋ง ๋ถํธ์ JPA๋ฅผ ํ์ฉํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ์์ฐ์ค๋ฝ๊ฒ ์ตํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋ฌด์์ ์ด ๊ธฐ์ ๋ค์ ์ด๋ป๊ฒ ํ์ฉํด์ผ ํ๋์ง ์ดํดํ๊ฒ ๋ฉ๋๋ค. ํนํ ์ค๋ฌด์์ ์ค์ํ ์ฑ๋ฅ ์ต์ ํ ๋ฐฉ์๋ ๋จ๊ณ์ ์ผ๋ก ๋ฐฐ์์ ์ ์ฉํ ์ ์์ต๋๋ค.
์ ์ฒด ๊ฐ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ค๊ณํ๊ณ ๊ฐ๋ฐํ๋ 1ํธ๊ณผ API๋ฅผ ๊ฐ๋ฐํ๊ณ , ์ฑ๋ฅ์ ์ต์ ํํ๋ 2ํธ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๋ณธ ๊ฐ์๋ ๊ทธ ์ค ์ฒซ ๋ฒ์งธ์ ํด๋นํ๋ 1ํธ์
๋๋ค.
๐จโ๐ป ์๊ฐ ์ ์ฐธ๊ณ ํด์ฃผ์ธ์!
- 2ํธ API ๊ฐ๋ฐ๊ณผ ์ฑ๋ฅ ์ต์ ํ๋ ๋ณ๋์ ๊ฐ์๋ก, ํ๋จ [์ฐ๊ด ๊ฐ์]์ ๋งํฌ๋ฅผ ๊ฑธ์ด๋์์ต๋๋ค.
ํ์ต ๊ณผ์
1ํธ - ์น ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ
์ค๋ฌด์ ๊ฐ๊น์ด ๋ณต์กํ ์์ , ์ฒ์๋ถํฐ ๋๊น์ง ์ฝ๋ฉ์ผ๋ก ์์ฑ!
1ํธ์ ํ์, ์ํ, ์ฃผ๋ฌธ ๋๋ฉ์ธ์ด ์๋ ๊ฐ๋จํ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ค๊ณํ๊ณ ๊ฐ๋ฐํฉ๋๋ค.
์งํ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ๋ก์ ํธ ํ๊ฒฝ์ค์ : ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ , ์คํ๋ง ๋ถํธ์ JPA, ๋ทฐ ํ
ํ๋ฆฟ์ธ ํ์๋ฆฌํ, ๋กฌ๋ณต, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์ ๋์ํ๋๋ก ํ๋ก์ ํธ ํ๊ฒฝ์ ๊ตฌ์ฑํฉ๋๋ค.
- ๋๋ฉ์ธ ๋ถ์ ์ค๊ณ: ์๊ตฌ์ฌํญ์ ๋ถ์ํ๊ณ ๋๋ฉ์ธ๊ณผ ํ
์ด๋ธ์ ์ค๊ณํฉ๋๋ค. ๋๋ฉ์ธ๊ณผ ํ
์ด๋ธ ์ค๊ณ๊ฐ ๋๋๋ฉด JPA๋ฅผ ํ์ฉํด์ ์ํฐํฐ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ , ์ํฐํฐ ํด๋์ค์ ํ
์ด๋ธ์ ๋งคํํฉ๋๋ค.
- ๋๋ฉ์ธ ๊ฐ๋ฐ: ํ์, ์ํ, ์ฃผ๋ฌธ ๋๋ฉ์ธ์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ๊ฐ๋ฐํ๊ณ , ํ
์คํธ ์ผ์ด์ค๋ฅผ ๋ง๋ค์ด์ ๊ฒ์ฆํฉ๋๋ค.
- ์น ๊ณ์ธต ๊ฐ๋ฐ: ๊ตฌ์ฑํ ๋๋ฉ์ธ์ ์น ํ๊ฒฝ์์ ๋์ํ๋๋ก ์ปจํธ๋กค๋ฌ์ ๋ทฐ ํ
ํ๋ฆฟ(ํ์๋ฆฌํ)์ ๊ฐ๋ฐํฉ๋๋ค. ์ค์ ๋์ํ๋ ํ๋ฉด์ ํ์ธํ ์ ์์ต๋๋ค.
2ํธ - API ๊ฐ๋ฐ๊ณผ ์ฑ๋ฅ ์ต์ ํ
์ต๊ทผ์๋ ๋ทฐ ํ
ํ๋ฆฟ์ ์ฌ์ฉํด์ ์ง์ ์๋ฒ์์ HTML์ ๋ง๋ค์ด์ ์๋ตํ๊ธฐ ๋ณด๋ค๋, API์ JSON ๋ฐ์ดํฐ๋ฅผ ์ค์ด์ ๋ฐํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์คํ๋ง ๋ถํธ์ JPA๋ฅผ ์ฌ์ฉํด์ API๋ฅผ ๊ฐ๋ฐํ ๋ ์ฃผ์ํ ์ ๊ณผ ์ฌ๋ฐ๋ฅธ ์ค๊ณ ๋ฐฉํฅ์ ์ดํดํ๊ณ , ์ฑ๋ฅ๊น์ง ๊ณ ๋ คํด์ API๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ด๋ฒ ํธ์ ๋ชฉํ์
๋๋ค.
2ํธ์ 1ํธ์์ ๋ง๋ ๋๋ฉ์ธ์ ๊ธฐ๋ฐ์ผ๋ก ์ธ๋ถ์์ ์ฌ์ฉํ ์ ์๋ REST API๋ฅผ ๊ฐ๋ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋จ๊ณ์ ์ผ๋ก ์กฐํ์ฉ API์ ์ฑ๋ฅ์ ์ต์ ํ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํตํด ์ค๋ฌด์์ ๊ผญ ํ์ํ JPA์ ์กฐํ ์ฟผ๋ฆฌ ํ๋๊ณผ ๊ด๋ จ๋ ๋ถ๋ถ์ ์ ์์ํ๊ฒ ํ์ด๋๋ฆฝ๋๋ค.
- API ๊ฐ๋ฐ ๊ธฐ๋ณธ: ๊ธฐ๋ณธ์ ์ ๋ฑ๋ก, ์์ , ์กฐํ์ฉ REST API๋ฅผ ๊ฐ๋ฐํฉ๋๋ค.
- API ๊ฐ๋ฐ ๊ณ ๊ธ: ์ค๋ฌด์์ JPA๋ก ์กฐํ์ฉ API๋ฅผ ๊ฐ๋ฐํ ๋, ์ฃผ์์ ๊ณผ ์ฌ๋ฐ๋ฅธ ์ค๊ณ ๋ฐฉํฅ์ ์๋ ค๋๋ฆฝ๋๋ค. JPA ์ง์ฐ ๋ก๋ฉ ์ด์๋ฅผ ํด๊ฒฐํ๊ณ , ๋จ๊ณ๋ณ๋ก ๋ค์ํ ์ฑ๋ฅ ์ต์ ํ ๋ฐฉ์์ ์ค๋ช
ํฉ๋๋ค.
- ์ค๋ฌด ํ์ ์ต์ ํ: ์คํ๋ง ๋ถํธ์ JPA๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ํด์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ค๋ฌด์์ ์ฅ์ ๋ก ์ด์ด์ง ์ ์๋ ๋ด์ฉ๋ค์ ๋ค๋ฃน๋๋ค.
ํ์ต ๋ฐฉ๋ฒ
์ด ๊ฐ์๋ ๋๋ถ๋ถ ์ค์ต์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฒ์๋ถํฐ ๋๊น์ง ๋ณธ์ธ์ด ์ง์ ์ฝ๋ฉ์ ํ๋ฉด์ ๊ฐ์๋ฅผ ๋ฐ๋ผ๊ฐ์ผ ๊ฐ์ฅ ๋ง์ ๊ฒ์ ์ป์ ์ ์์ต๋๋ค.
์ฐธ๊ณ ๋ก ์ด ๊ฐ์๋ ์คํ๋ง ๋ถํธ๋ JPA ์์ฒด๋ ์์ธํ ์ค๋ช
ํ์ง ์์ต๋๋ค. ์ด ๊ธฐ์ ๋ค์ ์ด๋ ์ ๋ ์๋ ๋ถ๋ค์ด ์ด ๊ธฐ์ ๋ค์ ์ต๋ํ ์ ํ์ฉํ ์ ์๊ฒ, ๊ทธ๋์ ์ค๋ฌด์์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๋ง๋ค ์ ์๋๋ก ๋์๋๋ฆฌ๋ ๊ฒ์ด ๋ชฉํ์
๋๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋ง์ด๋ JPA์ ๋ํ ์ดํด๊ฐ ์๋ ์ํ์์ ์ด ๊ฐ์๋ฅผ ๋ฃ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ํ์ง๋ง ์คํ๋ง์ด๋ JPA๋ฅผ ์์ง ์ ๋ชฐ๋ผ๋, ๋๊น์ง ๋ฐ๋ผํ๋ฉด ์๋ฐ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๋ป๊ฒ ๊ฐ๋ฐํ๊ณ ์์ฑํ๋์ง ์ ์ฒด์ ์ธ ๊ฐ์ ์ก์ ์ ์์ต๋๋ค. ์ดํ ๋ณธ์ธ์ด ๋ถ์กฑํ๋ค๊ณ ์๊ฐํ๋ ๊ธฐ๋ฐ๊ธฐ์ ์ ์ฑ์๊ฐ๋ ์์ผ๋ก ํ์ตํ์
๋ ๋ฉ๋๋ค.
์ฐ๊ด ๊ฐ์
๊ธฐ๋ณธํธ
ํ์ฉํธ
์ค์ ! Querydsl
Querydsl์ ํตํด ๋ณต์กํ ์ฟผ๋ฆฌ์ ๋์ ์ฟผ๋ฆฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์ฐธ๊ณ ๋์
์ฑ
์ ๋ ๊น์ ๋ด์ฉ์ ๊ณต๋ถํ๊ณ ์ถ์ ๋ถ๋ค์ ์ํ
์ฐธ๊ณ ์๋ก ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
(์ฑ
์ด ์์ด๋ ๊ฐ์๋ฅผ ์ํ ๋ณ๋์ ์๋ฃ๊ฐ ์ ๊ณต๋ฉ๋๋ค.)