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

์๋ฐ ์ง์์์๋ ์คํ๋ง ๋ถํธ์ JPA๋ฅผ ํ์ฉํด์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ๊ฒ์ด ์ธ๊ณ์ ์ธ ์ถ์ธ์
๋๋ค. ๊ทธ๋์ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ์ด ๋ ๊ธฐ์ ์ ํ์ตํ๊ณ ์ฌ์ฉํฉ๋๋ค. ํ์ง๋ง ์ค๋ฌด์ ๋ค์ํ๊ณ ๋ณต์กํ ์ํฉ์ ์ฑ๋ฅ๊น์ง ๊ณ ๋ คํ๋ฉด์, ์ด ๊ธฐ์ ๋ค์ ์ฌ๋๋ก ํ์ฉํ๋ ๊ฒ์ ์๊ฐ๋งํผ ์ฝ์ง ์์ต๋๋ค.
์ค๋ฌด์์๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ์ค ์๋ ๋จ๊ณ๋ฅผ ๋์ด์ ๊ธฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ด์ผ ํฉ๋๋ค. ๋ณต์กํ๊ณ , ๋ฐ์ดํฐ๋ ๋ง์ ์ํฉ์์ ์ฑ๋ฅ์ ์ต์ ํํ๊ณ , ๋์์ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํด์ผ ํฉ๋๋ค.
๊ฐ์ ๋ชฉํ
1ํธ์์๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ฉด์ ๊ธฐ๋ฅ ๊ตฌํ์ ์ด์ ์ ๋ง์ถ์๋ค๋ฉด, 2ํธ์ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ๋์ด์ ๊ธฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ์ด์ ์ ๋ง์ถ์์ต๋๋ค. ์ ๋๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ์ง, ์ค๋ฌด์์ ์ฃผ๋ก ์ด๋ค ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ์๊ณ , ์ด๋ป๊ฒ ํด๊ฒฐํด์ผ ํ๋์ง, ๊ธฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๊ฒ ๋์๋๋ฆฝ๋๋ค.
API ํ๋๋ฅผ ๊ฐ๋ฐํด๋ JPA๋ฅผ ์ฌ์ฉํ๋ฉด, ์ํฐํฐ๋ผ๋ ๊ฐ๋
์ด ๋ค์ด๊ฐ๋ฉด์ ๊ณ ๋ฏผํ ๊ฑฐ๋ฆฌ๊ฐ ๋ง์์ง๋๋ค. ์ํฐํฐ๋ฅผ API์ ์ง์ ๋
ธ์ถํด์ผ ํ๋? ์๋๋ฉด ๋ณ๋์ ๊ฐ์ฒด๋ฅผ ๋ณ๋๋ก ๋ง๋ค์ด์ ๋ฐํํด์ผ ํ๋? ์ํฐํฐ๋ฅผ ๋ฐํํ๋ฉด ์ง์ฐ ๋ก๋ฉ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋? ๋ฑ๋ฑ ์ ๋ง์ ๊ณ ๋ฏผ์ ํ๊ฒ ๋ฉ๋๋ค. ์ค๋ฌด์์ ์ด๋ป๊ฒ ๊ตฌํํ๋ ๊ฒ์ด ์์ ํ๊ณ , ์ ์ง๋ณด์ํ๊ธฐ ์ข์ ๋ฐฉ๋ฒ์ธ์ง ์ค์ ๋
ธํ์ฐ๋ฅผ ์๋ ค๋๋ฆฝ๋๋ค.
JPA ๊ทนํ์ ์กฐํ ์ฑ๋ฅ ์ต์ ํ ์ดํด
์ค๋ฌด์์๋ ์ฌ๋ฌ ํ
์ด๋ธ์ ์กฐ์ธํด์, ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ผ ํ๋ ๋ณต์กํ ์ํฉ์ด ์์ฃผ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ์ผ๋๋ค ๊ด๊ณ์ธ ์ปฌ๋ ์
๋ฐ์ดํฐ๋ ํจ๊ป ์กฐํํด์ผ ํ๊ณ , ์ถ๊ฐ๋ก ํ์ด์ง๊น์ง ์ฒ๋ฆฌํด์ผ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ฌธ์ ๊ฐ ๋งค์ฐ ๋ณต์กํด์ ธ์ ๋จ์ํ ํ
์ด๋ธ ์กฐ์ธ๋ง์ผ๋ก๋ ๋ฌธ์ ํด๊ฒฐ์ด ์ด๋ ต์ต๋๋ค. ์ด๋ฐ ๋ณต์กํ ์กฐํ ์ฑ๋ฅ ๋ฌธ์ ๋ค์ JPA๋ก ์ด๋ป๊ฒ ์ต์ ํ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ํ๊ณ๋ ์ด๋๊น์ง์ธ์ง ์ค์ ๋
ธํ์ฐ๋ฅผ ์๋ ค๋๋ฆฝ๋๋ค.
๋ณต์กํ ์์ ๋ฅผ ์ฝ๋ฉ์ผ๋ก 6๋จ๊ณ๋ก ๋๋์ด ์ฑ๋ฅ ํ๋
์ฑ๋ฅ์ด ์๋์ค๋ API๋ฅผ ์ง์ ๊ฐ๋ฐํด๋ณด๊ณ , ์ ์ฑ๋ฅ์ด ์๋์ค๋์ง ๋ถ์ํ๊ณ , 6๋จ๊ณ๋ก ๋๋์ด์ ๋จ๊ณ๋ณ๋ก ์ง์ ์ฝ๋ฉํ๋ฉด์ ํ๋ํ ์ ์๊ฒ ์ค๋นํ์ต๋๋ค. ์ด๋ฐ ๋ด์ฉ์ ๋ฐ๋ผํ๋ค ๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์ค๋ฌด์ ๋ณต์กํ ์ฑ๋ฅ ์ด์๋ฅผ ์ด๋ป๊ฒ ๋์ฒํด์ผ ํ ์ง ์ ์ ์์ต๋๋ค.
์ค๋ฌด JPA ์ฑ๋ฅ ๋ฌธ์ ์ 90% ํด๊ฒฐ
์ด๋ฒ ๊ฐ์๋ ์ฌ๋ฌ๋ถ์ด ์ค๋ฌด JPA ์ฑ๋ฅ ๋ฌธ์ ์ 90%๋ฅผ ํด๊ฒฐํ ์ ์๋๋ก ์ค๋ฌด์์ ์ ๋ง ์์ฃผ ๋ฐ์ํ๋ ๋ค์ํ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๋ด์์ต๋๋ค. ์คํ๋ง ๋ถํธ์ JPA๋ก ์งํํ๋ ์ค๋ฌด ํ๋ก์ ํธ๋ฅผ ๋ณด๋ฉด ๊ธฐ๋ฅ ๊ตฌํ์ ์ํ๋๋ฐ, ํ๋ก์ ํธ ๋ง์ง๋ง์ ์ฑ๋ฅ์ด ์๋์์ ๊ณ ์ํ๋ ๊ฐ๋ฐ์ ๋ถ๋ค์ ์ ๋ง ๋ง์ด ๋ดค์ต๋๋ค. ๊ทธ๋์ ๋์๋๋ฆฌ๋ฌ ๊ฐ๋ณด๋ฉด JPA ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ด๋ป๊ฒ ํด์ผ ํ๋์ง ๋ชจ๋ฅด๋ ๋ถ๋ค์ด ๋ง์์ต๋๋ค.
๋ช์ผ ๋ฐค์ ์๋ฉด์ ์ด๋ป๊ฒ๋ ํด๊ฒฐํ๋ ค๊ณ ํ๋ ๋ถ ๋ถํฐ, ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๋ JPA ๋์ ์ SQL์ ์ง์ ํ๋ํ๋ ์์ฑํด์ ์ ๋ง์ ์ฝ๋๋ฅผ SQL๋ก ๋ณ๊ฒฝํ์๋ ๋ถ ๊น์ง ์ ๋ง ๋ค์ํ ์ํฉ์ ๋ณด์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ ๋์๋๋ฆฌ๋ฌ ๊ฐ์ ์ค์ ์ฑ๋ฅ์ด ์ ๋์ค๋๋ก ํ๋ํ๋๋ฐ๋ 5๋ถ์ด ๊ฑธ๋ฆฌ์ง ์์์ต๋๋ค. JPA ์ฟผ๋ฆฌ ์ต์
์ ์กฐ์ ํ๊ณ , ์ฝ๊ฐ์ ์ฝ๋๋ง ์์ ํ๋๋ฐ, ๋ช์ผ ๊ณ ์์ ํด๋ 1์๊ฐ์ฉ ๊ฑธ๋ฆฌ๋ ์ฟผ๋ฆฌ๊ฐ ์์ญ์ด๋ก ์ค์ด๋๋ ๊ฒ์ ๋ณธ ๊ฐ๋ฐ์ ๋ถ์ ํ์ ์ด ์์ง๋ ์์ํฉ๋๋ค. JPA๋ ๊ทธ ์ด๋ฏธ ๊ทธ ์์ฒด๋ก ๋ค์ํ ์ฑ๋ฅ ํ๋ ์ต์
์ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ์ฝ๊ฐ์ ์ต์
๊ณผ ์ฝ๋ ์์ ๋ง์ผ๋ก ๋ค์ํ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์๋ํ ์ ์์ต๋๋ค.
์ฌ๋ฌ๋ถ๋ ์ด ๊ฐ์์์ ์ค๋ช
ํ๋ ๋ด์ฉ์ ์ดํดํ๋ฉด 90%์ ์ค๋ฌด ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ฃผ์ ๋ชฉ์ฐจ
์ต๊ทผ์๋ ๋ทฐ ํ
ํ๋ฆฟ์ ์ฌ์ฉํด์ ์ง์ ์๋ฒ์์ HTML์ ๋ง๋ค์ด์ ์๋ตํ๊ธฐ๋ณด๋ค๋, API์ JSON ๋ฐ์ดํฐ๋ฅผ ์ค์ด์ ๋ฐํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์คํ๋ง ๋ถํธ์ JPA๋ฅผ ์ฌ์ฉํด์ API๋ฅผ ๊ฐ๋ฐํ ๋ ์ฃผ์ํ ์ ๊ณผ ์ฌ๋ฐ๋ฅธ ์ค๊ณ ๋ฐฉํฅ์ ์ดํดํ๊ณ , ์ฑ๋ฅ๊น์ง ๊ณ ๋ คํด์ API๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ด๋ฒ ํธ์ ๋ชฉํ์
๋๋ค.
2ํธ์ 1ํธ์์ ๋ง๋ ๋๋ฉ์ธ์ ๊ธฐ๋ฐ์ผ๋ก REST API๋ฅผ ๊ฐ๋ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋จ๊ณ์ ์ผ๋ก ์กฐํ์ฉ API์ ์ฑ๋ฅ์ ์ต์ ํ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํตํด ์ค๋ฌด์์ ๊ผญ ํ์ํ JPA์ ์กฐํ ์ฟผ๋ฆฌ ํ๋๊ณผ ๊ด๋ จ๋ ๋ถ๋ถ์ ์ ์์ํ๊ฒ ํ์ด๋๋ฆฝ๋๋ค.
- API ๊ฐ๋ฐ ๊ธฐ๋ณธ: ๊ธฐ๋ณธ์ ์ธ ๋ฑ๋ก, ์์ , ์กฐํ์ฉ REST API๋ฅผ ๊ฐ๋ฐํฉ๋๋ค.
- API ๊ฐ๋ฐ ๊ณ ๊ธ: ์ค๋ฌด์์ JPA๋ก ์กฐํ์ฉ API๋ฅผ ๊ฐ๋ฐํ ๋, ์ฃผ์์ ๊ณผ ์ฌ๋ฐ๋ฅธ ์ค๊ณ ๋ฐฉํฅ์ ์๋ ค๋๋ฆฝ๋๋ค. JPA ์ง์ฐ ๋ก๋ฉ ์ด์๋ฅผ ํด๊ฒฐํ๊ณ , ๋จ๊ณ๋ณ๋ก ๋ค์ํ ์ฑ๋ฅ ์ต์ ํ ๋ฐฉ์์ ์ค๋ช
ํฉ๋๋ค.
- ์ค๋ฌด ํ์ ์ต์ ํ: ์คํ๋ง ๋ถํธ์ JPA๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ํด์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ค๋ฌด์์ ์ฅ์ ๋ก ์ด์ด์ง ์ ์๋ OSIV ๋ด์ฉ์ ๋ค๋ฃน๋๋ค.
ํ์ต ๋ฐฉ๋ฒ
์ด ๊ฐ์๋ ๋๋ถ๋ถ ์ค์ต์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฒ์๋ถํฐ ๋๊น์ง ๋ณธ์ธ์ด ์ง์ ์ฝ๋ฉ์ ํ๋ฉด์ ๊ฐ์๋ฅผ ๋ฐ๋ผ๊ฐ์ผ ๊ฐ์ฅ ๋ง์ ๊ฒ์ ์ป์ ์ ์์ต๋๋ค.
์ฐธ๊ณ ๋ก ์ด ๊ฐ์๋ ์คํ๋ง ๋ถํธ์ JPA๋ฅผ ์ด๋์ ๋ ์๊ณ , ๊ฐ๋จํ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋๋ ๊ฐ๋ฐํ ์ ์๋ ๋ถ์ด ๋์์
๋๋ค. ์ด ๋ถ๋ค์ด ๊ธฐ๋ฅ ๊ตฌํ์ ๋์ด์ ๊ธฐ์ ์ ์ผ๋ก ๊น์ด์๋ ์ดํด๋ฅผ ํ ์ ์๊ฒ ๋์๋๋ฆฌ๋ ๊ฒ์ด ๋ชฉํ์
๋๋ค. ๋ฐ๋ผ์ ์คํ๋ง ๋ถํธ์ JPA์ ๋ํ ์ดํด๊ฐ ๋ถ์กฑํ๋ฉด 1ํธ ๊ฐ์๋ฅผ ๋จผ์ ๋ฃ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
๐ป ์ ์ ๊ฐ์๋ฅผ ํ์ธํด์ฃผ์ธ์!
- 1ํธ์์ ์ค๊ณํ ๋๋ฉ์ธ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก API๋ฅผ ๊ฐ๋ฐํ๊ณ , ๋ค์ํ ์ฑ๋ฅ ์ต์ ํ ๊ธฐ๋ฒ์ ๋ณด์ฌ๋๋ฆฝ๋๋ค. ๋ฐ๋ผ์ 1ํธ ๊ฐ์๋ฅผ ๋ฃ๊ณ 2ํธ ๊ฐ์๋ฅผ ๋ฃ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
์ฐ๊ด ๊ฐ์
๊ธฐ๋ณธํธ
ํ์ฉํธ
์ค์ ! Querydsl
Querydsl์ ํตํด ๋ณต์กํ ์ฟผ๋ฆฌ์ ๋์ ์ฟผ๋ฆฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์ฐธ๊ณ ๋์
์ฑ
์ ๋ ๊น์ ๋ด์ฉ์ ๊ณต๋ถํ๊ณ ์ถ์ ๋ถ๋ค์ ์ํ
์ฐธ๊ณ ์๋ก ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
(์ฑ
์ด ์์ด๋ ๊ฐ์๋ฅผ ์ํ ๋ณ๋์ ์๋ฃ๊ฐ ์ ๊ณต๋ฉ๋๋ค.)