
์ฝ๋๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ์น ํ๋ก์ ํธ - Basic
๊ตฌ๋ฉ๊ฐ๊ฒ์ฝ๋ฉ๋จ
Spring Legacy ํ๋ก์ ํธ๋ฅผ ๊ณต๋ถํด์ผ ํ๋ค๋ฉด? XML์ค์ ํ๋ํ๋ ์ง์ ๋ง๋ค์ด ๋ณด๊ณ ์ถ๋ค๋ฉด?
์ด๊ธ
Spring, mybatis, JSP
์คํ๋ง ๋ถํธ(Spring Boot ver3.4.x)๋ก ์ ์๋๋ API ์๋ฒ์ React 19 (with TypeScript) ์ฐ๋ ํ๋ก์ ํธ ์์ฑํ๊ธฐ! ๋ฐฑ์๋ ํฌํธํด๋ฆฌ์ค์ ํ๋ก ํธ ์๋ ์ ์ฉ! ์ค๋ฌด์๋ค์ ๋์์ผ๋ก ์์ฑ๋ ๊ฐ์(์ด๊ธ์์ฉ ๊ฐ์๋ ์๋๋๋ค.)
์๊ฐ์ 1,512๋ช
๋์ด๋ ์ค๊ธ์ด์
์๊ฐ๊ธฐํ ๋ฌด์ ํ






ํํ์์คํ /ICT
์์ง์๋ค๋ ์ด ๊ฐ์๋ฅผ ๋ฃ๊ณ ์์ด์!





ํํ์์คํ /ICT
์์ง์๋ค๋ ์ด ๊ฐ์๋ฅผ ๋ฃ๊ณ ์์ด์!
๋จผ์ ๊ฒฝํํ ์๊ฐ์๋ค์ ํ๊ธฐ
5.0
minho.ha
์ค์ ํ๋ก์ ํธ๋ฅผ ์์๋๋ก ์ฝ๋ฉํ๋ฉด์ ์ค๋ช ํด ์ฃผ๋ ๊ฒ์ด ๋ง์ ๋์์ด ๋ผ์. ๋ค๋ง ์ ์ค๋ ฅ์ด ์ด๋ฅผ ๋ฐ๋ผ๊ฐ์ง ๋ชปํ ๋ฟ์ด์ฃ . ํํํํํ
5.0
์๋ฐ์ด
์ด๋ฐ ๊ฐ์๊ฐ ์ ๋ง ์ค๋ฌด์ ๋์์ด ๋๋ ๊ฐ์๋ผ๊ณ ์๊ฐ๋ฉ๋๋ค. ๊ฐ์ฌ๋์ ๊ฒฝํ์์ ์ฐ๋ฌ๋์ค๋ ํ์ด๋ ์ ๋ณด๋ค๋ ์ข์์ต๋๋ค. ๊ฐ์์ ๋์ค๋ ๊ฐ ๊ธฐ์ ๋ค์ ๊น์ด๋ ๊ฐ์ ํน์ฑ์ ์กฐ๊ธ ์์๊ฐ์ด ์๋๊ฒ ๊ฐ์๋ฐ, ๊ฒ์์ด๋ ์ฑ ์ ์ฐธ๊ณ ํ๋๊น ์ฝ๊ฒ ์ดํด๊ฐ ๊ฐ๋๋ค. ๋จ, ์ ๋ ์ฐจ์ ๊ฐ๋ฐ์๋ ์กฐ๊ธ ํ๋ค ์ ๋ ์์๊ฒ ๊ฐ๋ค์.
5.0
b0i4s
์์ฆ๊ฐ์ด ํ๋ก ํธ, ๋ฐฑ ํ๋๋ง ํ๋ค๊ณ ๋๋๊ฒ ์๋ ์๊ธฐ์ ํญ์ ์ ๋งคํ๊ฒ ํ๋ก ํธ๋ง ๋ฐ๋ก ๋ง๋ค์ด ๋ณด๊ณ ๋ฐฑ๋ง ๋ฐ๋ก ๋ง๋ค์ด ๋ณด๊ณ ์ ์์ ์ธ ํตํฉ ํ๋ก์ ํธ๋ฅผ ํ ๋ฒ ๋ง๋ค์ด๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ ๋ค์๋๋ฐ, ํ์ชฝ๋ง ์๊ณ ๊ณ์ ๋ถ์ด ์๋๋ผ ๋ฉ์ธ์ ํ๋ ๋๊ณ ์์ชฝ์ ํตํฉ์ ์ธ ์ธก๋ฉด์์ ๊ถ๊ธ์ฆ์ ๊ฐ์ง๊ณ ์์๋ ๋ถ๋ค์๊ฒ ์ ๋ง ์ข์ ๊ฐ์๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ ๋ ์ฑ ์ ๊ตฌ์ ํ์ง ์์์ง๋ง ๊ฐ์๋ก๋ ๋ถ์กฑํจ์ด ์๋ ๊ฒ ๊ฐ๋ค์. ๊ทธ๋ ์ง๋ง ์ฑ ๊ณผ ๊ฐ์ด ๋ณด๋ฉด ๋ค์ ์ฐพ์๋ณด๋ ์๊ฐ์ ์ค ์ผ ์ ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค๊ธด ํ๋ค์. ์ฐธ๊ณ ๋ก ๋ฆฌ์กํธ, ์คํ๋ง ๋ ๋ค ์ ์์ง์์ด ์ข ํ์ํ๊ธด ํ์ง๋ง ์ผ์ฃผ์ผ๋ง ๊ณต๋ถํด๋ ์ ์ ์๋ ๋ด์ฉ๋ค์ด๋ ํ์คํ์ ๊ด์ฌ์ด ์กฐ๊ธ์ด๋ผ๋ ์์ผ์ ๋ถ๋ค์๊ฒ ์ข์ ๊ฐ์๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ข์ ๊ฐ์ ๊ฐ์ฌํฉ๋๋ค.
๋ฆฌ์กํธ(React) ๊ฐ๋ฐ ํ๋ก์ธ์ค
API ์๋ฒ ๊ฐ๋ฐ
JWT ์ธ์ฆ ์ฒ๋ฆฌ
๋ฆฌ๋์ค ํดํท(Redux Toolkit)
๋ฆฌ์กํธ ์ฟผ๋ฆฌ(React Query)
Zustand
ํ์ต ๋์์
๋๊ตฌ์ผ๊น์?
API ์๋ฒ๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๋ถ๋ค
๋ฆฌ์กํธ ๋ฌธ๋ฒ์ ์ด๋ป๊ฒ ์ ์ฉํด์ผ ํ๋์ง ๊ณ ๋ฏผํ๋ ๋ถ๋ค
์ ์ ์ง์,
ํ์ํ ๊น์?
์๋ฐ์คํฌ๋ฆฝํธ(JavaScript)
์คํ๋ง(Spring)
์น ํ๋ก๊ทธ๋๋ฐ
2,305
๋ช
์๊ฐ์
177
๊ฐ
์๊ฐํ
292
๊ฐ
๋ต๋ณ
4.8
์
๊ฐ์ ํ์
5
๊ฐ
๊ฐ์
๊ตฌ๋ฉ๊ฐ๊ฒ์ฝ๋ฉ๋จ์ 2015๋ ๋ถํฐ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ์ง์ข ์ ์ฌ๋๋ค์ ๋ชจ์์ ์ํด ๋ง๋ค์ด์ง ์ปค๋ฎค๋ํฐ์ ๋๋ค.
๊ฐ์์ ์งํ์ ํ์ฌ ๊ตฌ๋ฉ๊ฐ๊ฒ ์ฝ๋ฉ๋จ์ ์ด์ํ๊ณ ์๋ ์ฟ ํค ๋งค๋์ ๊ฐ ์งํํ๊ณ ์์ต๋๋ค.
2000๋ ๋ถํฐ ๊ฐ๋ฐ์ ์์ํ์๊ณ ๋ฒค์ฒ ๊ธฐ์ , ์ค์ ๊ธฐ์ , ๋๊ธฐ์ / ํ๋ฆฌ๋์ ๋ฑ์ ๊ฐ๋ฐ ๊ฒฝํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
2010๋ ๋ ๋ถํฐ๋ ์ฃผ๋ก ๊ธฐ์ ์ฒด ๊ฐ์์ ์ปจ์คํ ์ ์ฃผ์ ์ ๋ฌด๋ก ํ๊ณ ์์ต๋๋ค.
์ฃผ์ ์ ์
์ฝ๋๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ์น ํ๋ก์ ํธ
์ฝ๋๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ๋ถํธ
์ฝ๋๋ก ๋ฐฐ์ฐ๋ React
RESTful API ์๋ฒ ๊ตฌํ
์คํ๋ง 6 ๋ ๊ฑฐ์ ํ๋ก์ ํธ
์๋ฐ ์น ๊ฐ๋ฐ ์ํฌ๋ถ
React Native ์ธ ์ก์ (๋ฒ์ญ)
๊ฐ๋ฐ/๊ฐ์
์ผ์ฑ SDS ๊ฐ๋ฐํ ๊ทผ๋ฌด
SK ๊ณ ๊ฐํ๋ณต ์ฃผ์ํ์ฌ ๊ทผ๋ฌด
KT / SK / ํฌ์ค๋ฐ์ดํฐ / ๊ต๋ณด ์๋ช / ์ ์ธ๊ณ / ์์์๋ / ๊ฑด๊ฐ๋ณดํ ๊ด๋ฆฌ๊ณต๋จ ๋ฑ๋ฑ ๊ธฐ์ ์ฒด ๊ฐ์
์ ์ฒด
98๊ฐ โ (21์๊ฐ 54๋ถ)
ํด๋น ๊ฐ์์์ ์ ๊ณต:
์ ์ฒด
123๊ฐ
4.7
123๊ฐ์ ์๊ฐํ
์๊ฐํ 4
โ
ํ๊ท ํ์ 5.0
5
์์ฆ๊ฐ์ด ํ๋ก ํธ, ๋ฐฑ ํ๋๋ง ํ๋ค๊ณ ๋๋๊ฒ ์๋ ์๊ธฐ์ ํญ์ ์ ๋งคํ๊ฒ ํ๋ก ํธ๋ง ๋ฐ๋ก ๋ง๋ค์ด ๋ณด๊ณ ๋ฐฑ๋ง ๋ฐ๋ก ๋ง๋ค์ด ๋ณด๊ณ ์ ์์ ์ธ ํตํฉ ํ๋ก์ ํธ๋ฅผ ํ ๋ฒ ๋ง๋ค์ด๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ ๋ค์๋๋ฐ, ํ์ชฝ๋ง ์๊ณ ๊ณ์ ๋ถ์ด ์๋๋ผ ๋ฉ์ธ์ ํ๋ ๋๊ณ ์์ชฝ์ ํตํฉ์ ์ธ ์ธก๋ฉด์์ ๊ถ๊ธ์ฆ์ ๊ฐ์ง๊ณ ์์๋ ๋ถ๋ค์๊ฒ ์ ๋ง ์ข์ ๊ฐ์๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ ๋ ์ฑ ์ ๊ตฌ์ ํ์ง ์์์ง๋ง ๊ฐ์๋ก๋ ๋ถ์กฑํจ์ด ์๋ ๊ฒ ๊ฐ๋ค์. ๊ทธ๋ ์ง๋ง ์ฑ ๊ณผ ๊ฐ์ด ๋ณด๋ฉด ๋ค์ ์ฐพ์๋ณด๋ ์๊ฐ์ ์ค ์ผ ์ ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค๊ธด ํ๋ค์. ์ฐธ๊ณ ๋ก ๋ฆฌ์กํธ, ์คํ๋ง ๋ ๋ค ์ ์์ง์์ด ์ข ํ์ํ๊ธด ํ์ง๋ง ์ผ์ฃผ์ผ๋ง ๊ณต๋ถํด๋ ์ ์ ์๋ ๋ด์ฉ๋ค์ด๋ ํ์คํ์ ๊ด์ฌ์ด ์กฐ๊ธ์ด๋ผ๋ ์์ผ์ ๋ถ๋ค์๊ฒ ์ข์ ๊ฐ์๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ข์ ๊ฐ์ ๊ฐ์ฌํฉ๋๋ค.
์ ์ ์๋๋ฅผ ์๋ฒฝํ๊ฒ ์ดํดํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋จ์ ๊ฐ์๋ค๋ ๋์์ด ๋์๋ฉด ์ข๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์๊ฐํ 1
โ
ํ๊ท ํ์ 5.0
5
์ด๋ฐ ๊ฐ์๊ฐ ์ ๋ง ์ค๋ฌด์ ๋์์ด ๋๋ ๊ฐ์๋ผ๊ณ ์๊ฐ๋ฉ๋๋ค. ๊ฐ์ฌ๋์ ๊ฒฝํ์์ ์ฐ๋ฌ๋์ค๋ ํ์ด๋ ์ ๋ณด๋ค๋ ์ข์์ต๋๋ค. ๊ฐ์์ ๋์ค๋ ๊ฐ ๊ธฐ์ ๋ค์ ๊น์ด๋ ๊ฐ์ ํน์ฑ์ ์กฐ๊ธ ์์๊ฐ์ด ์๋๊ฒ ๊ฐ์๋ฐ, ๊ฒ์์ด๋ ์ฑ ์ ์ฐธ๊ณ ํ๋๊น ์ฝ๊ฒ ์ดํด๊ฐ ๊ฐ๋๋ค. ๋จ, ์ ๋ ์ฐจ์ ๊ฐ๋ฐ์๋ ์กฐ๊ธ ํ๋ค ์ ๋ ์์๊ฒ ๊ฐ๋ค์.
์ ์์๋๋ฅผ ์ดํดํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ง์ํ์ ๋๋ก ๊ธฐ์ด์ ์ธ ๋ถ๋ถ์ ์ค๋ช ์ ํ๊ณ๊ฐ ์ข ์์์ต๋๋ค. ํ์ง๋ง ์ค๋ฌด์์ ํ๋ก์ ํธ๋ฅผ ํ๋ค๊ณ ์๊ฐํ๊ณ ๊ณผ๊ฐํ๊ฒ ์ค์ธ๊ฒ ์ด์ ๋๋ค์.. ์์ผ๋ก ๋จ์ ํ์ตํ์๋ ๋์ ์นดํ๋ ์ธํ๋ฐ์ ํตํด์ ์ง๋ฌธ ์ฌ๋ฆฌ์๋ฉด ์๋๋งํผ ๋์๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค.
์๊ฐํ 2
โ
ํ๊ท ํ์ 5.0
์๊ฐํ 10
โ
ํ๊ท ํ์ 5.0
์๊ฐํ 19
โ
ํ๊ท ํ์ 4.9
4
์ด๋์ ๋ ์ง์์ด ์์ผ๋ฉด ๋ฃ๊ธฐ ํธ์ํจ. ๋จ, ๋จ์ํ ์คํธ์ฝ๋์์ ๋ก๊ทธ์ฐ๊ธฐ๋ก ๋์ผ๋ก ํ์ธํ๋ ๋ฐฉ์์ด๋ผ๊ฑฐ๋, modify ๋ฉ์๋์์ repo.save๋ฅผ ํธ์ถํ๋ค๊ฑฐ๋ ํ๋ ๊ฐ์ธ์คํ์ผ์ด ๋ฐ์๋ ์ฝ๋(?)๊ฐ ๋ง์ ์ ์ ํ ์์ ์ ์คํ์ผ์ ๋ง๊ฒ ๋ น์ฌ๋ด๊ธฐ์ ์ด๋ณด๋ค์ ์ด๋ ค์๋ณด์. ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์ง๋ ์ฌ๋๋ ์๊ตฌ๋ ์ค ์ ๊ฑด ์ข์๋ณด์ด๋ค ํ๋ ๊ฒ๋ค์ ๊ฑธ๋ฌ์ ํก์ํ ์ ๋ ์ง์์ด ๋๋ค๋ฉด ๋ณต์ต์ผ๋ก ์๋นํ ์ข์ ๊ฐ์
์ ์์ ์ผ๋ก ๋ง๋๋ ์ํฉ์ด๋ผ๋ฉด modify ์์ save( )๋ฅผ ํ ํ์๋ ์์ต๋๋ค(๋ํฐ์ฒดํฌ) ๋ํฐ ์ฒดํฌ๊ฐ ๋๋ ค๋ฉด ํด๋น ์ํฐํฐ ๊ฐ์ฒด๋ ์์ ์ํ์์ ๋ณด์ฅํ ์ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐํน ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๊ณผ ์์ ํ๋ค ๋ณด๋ฉด ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ๋ณผ ๋๋ ์์ต๋๋ค. @Transactional // ํด๋น ํธ๋์ญ์ ๊ฒฝ๊ณ์ ์ฐ๊ฒฐ๋๋ ์์์ฑ ์ปจํ ์คํธ์ ๋ฌด๊ดํ user ์ํฐํฐ public void saveRefreshToken(User user, String newRefreshToken) { ... user.setRefreshToken(newRefreshToken); ... } ์ด๋ฐ ๊ฒฝ์ฐ User๊ฐ์ฒด๋ ๋ํฐ ์ฒดํฌ ๋์์ด ์๋๊ฒ ๋ฉ๋๋ค. ์ด๋ฐ ์ํฉ๋ค์ ๋๋นํ๊ธฐ ์ํด์ save( )๋ฅผ ํ๋ ๊ฒ์ด ์ํฐ ํจํด์ ์๋๋ผ๊ณ ์๊ฐํ์ต๋๋ค. -------------------------- ChatGPT Spring Data JPA์์๋ ์ํฐํฐ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ ๊ฐ์ง ์ฃผ์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค: ๋ณ๊ฒฝ ๊ฐ์ง(dirty checking)์ save() ๋ฉ์๋ ์ฌ์ฉ์ ๋๋ค. ๊ฐ๊ฐ์ ๋ฐฉ๋ฒ์ ํน์ ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ๊ฒ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์๋์ ๊ฐ ๋ฐฉ๋ฒ์ ์ฅ๋จ์ ๊ณผ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ค๋ช ํ๊ฒ ์ต๋๋ค. --------------------. ๊ฒฐ๋ก ์ด๋ค ๋ฐฉ์์ ์ฌ์ฉํ ์ง๋ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๋ณ๊ฒฝ ๊ฐ์ง๋ ๊ฐ๋จํ๊ณ ์์ ํธ๋์ญ์ ์ ์ ํฉํ๋ฉฐ, ๋ช ์์ ์ ์ฅ ๋ฐฉ์(save())์ ๋ช ํํ๊ณ ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ด ํฌํจ๋ ๋๊ท๋ชจ ํธ๋์ญ์ ์ ์ ํฉํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ค๋ฌด์์๋ ๋ ๊ฐ์ง ๋ฐฉ์์ ํผ์ฉํ์ฌ ์ฌ์ฉํฉ๋๋ค. ๋จ์ํ CRUD ์์ ์๋ ๋ณ๊ฒฝ ๊ฐ์ง๋ฅผ ์ฌ์ฉํ๊ณ , ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ด ํ์ํ ๊ฒฝ์ฐ์๋ save() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ช ์์ ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค.
์ค ๊ทธ๋ฐ์ํฉ๋ ์๊ตฐ์ ๋ ๋ฐฐ์๊ฐ๋๋ค ๊ฐ์ฌํฉ๋๋ค
์ง์๊ณต์ ์๋์ ๋ค๋ฅธ ๊ฐ์๋ฅผ ๋ง๋๋ณด์ธ์!
๊ฐ์ ๋ถ์ผ์ ๋ค๋ฅธ ๊ฐ์๋ฅผ ๋ง๋๋ณด์ธ์!