์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” React 19 with ์Šคํ”„๋ง๋ถ€ํŠธ API์„œ๋ฒ„

์Šคํ”„๋ง ๋ถ€ํŠธ(Spring Boot ver3.4.x)๋กœ ์ œ์ž‘๋˜๋Š” API ์„œ๋ฒ„์™€ React 19 (with TypeScript) ์—ฐ๋™ ํ”„๋กœ์ ํŠธ ์™„์„ฑํ•˜๊ธฐ! ๋ฐฑ์—”๋“œ ํฌํŠธํด๋ฆฌ์˜ค์— ํ”„๋ก ํŠธ ์—”๋“œ ์ ์šฉ! ์‹ค๋ฌด์ž๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ์ž‘์„ฑ๋œ ๊ฐ•์˜(์ดˆ๊ธ‰์ž์šฉ ๊ฐ•์˜๋Š” ์•„๋‹™๋‹ˆ๋‹ค.)

(4.7) ์ˆ˜๊ฐ•ํ‰ 120๊ฐœ

์ˆ˜๊ฐ•์ƒ 1,483๋ช…

๋‚œ์ด๋„ ์ค‘๊ธ‰์ด์ƒ

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

์›น๊ฐœ๋ฐœ
์›น๊ฐœ๋ฐœ
์ฑ…
์ฑ…
์ €์ž ์ง๊ฐ•
์ €์ž ์ง๊ฐ•
์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
์›น๊ฐœ๋ฐœ
์›น๊ฐœ๋ฐœ
์ฑ…
์ฑ…
์ €์ž ์ง๊ฐ•
์ €์ž ์ง๊ฐ•
์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

4.7

5.0

minho.ha

31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

์‹ค์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ฝ”๋”ฉํ•˜๋ฉด์„œ ์„ค๋ช…ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ๋งŽ์€ ๋„์›€์ด ๋ผ์š”. ๋‹ค๋งŒ ์ œ ์‹ค๋ ฅ์ด ์ด๋ฅผ ๋”ฐ๋ผ๊ฐ€์ง€ ๋ชปํ•  ๋ฟ์ด์ฃ . ํ•˜ํ•˜ํ•˜ํ•˜ํ•˜

5.0

์›๋ฐ์ด

30% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

์ด๋Ÿฐ ๊ฐ•์˜๊ฐ€ ์ •๋ง ์‹ค๋ฌด์— ๋„์›€์ด ๋˜๋Š” ๊ฐ•์˜๋ผ๊ณ  ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. ๊ฐ•์‚ฌ๋‹˜์˜ ๊ฒฝํ—˜์—์„œ ์šฐ๋Ÿฌ๋‚˜์˜ค๋Š” ํŒ์ด๋‚˜ ์ •๋ณด๋“ค๋„ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ•์˜์— ๋‚˜์˜ค๋Š” ๊ฐ ๊ธฐ์ˆ ๋“ค์˜ ๊นŠ์ด๋Š” ๊ฐ•์˜ ํŠน์„ฑ์ƒ ์กฐ๊ธˆ ์–•์€๊ฐ์ด ์žˆ๋Š”๊ฒƒ ๊ฐ™์€๋ฐ, ๊ฒ€์ƒ‰์ด๋‚˜ ์ฑ…์„ ์ฐธ๊ณ ํ•˜๋‹ˆ๊น ์‰ฝ๊ฒŒ ์ดํ•ด๊ฐ€ ๊ฐ๋‹ˆ๋‹ค. ๋‹จ, ์ € ๋…„์ฐจ์˜ ๊ฐœ๋ฐœ์ž๋Š” ์กฐ๊ธˆ ํž˜๋“ค ์ˆ˜ ๋„ ์žˆ์„๊ฒƒ ๊ฐ™๋„ค์š”.

5.0

b0i4s

18% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

์š”์ฆ˜๊ฐ™์ด ํ”„๋ก ํŠธ, ๋ฐฑ ํ•˜๋‚˜๋งŒ ํ•œ๋‹ค๊ณ  ๋˜๋Š”๊ฒŒ ์•„๋‹Œ ์‹œ๊ธฐ์— ํ•ญ์ƒ ์• ๋งคํ•˜๊ฒŒ ํ”„๋ก ํŠธ๋งŒ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ๋ณด๊ณ  ๋ฐฑ๋งŒ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ๋ณด๊ณ  ์ •์ƒ์ ์ธ ํ†ตํ•ฉ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ ๋“ค์—ˆ๋Š”๋ฐ, ํ•œ์ชฝ๋งŒ ์•Œ๊ณ  ๊ณ„์‹  ๋ถ„์ด ์•„๋‹ˆ๋ผ ๋ฉ”์ธ์„ ํ•˜๋‚˜ ๋‘๊ณ  ์–‘์ชฝ์˜ ํ†ตํ•ฉ์ ์ธ ์ธก๋ฉด์—์„œ ๊ถ๊ธˆ์ฆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋˜ ๋ถ„๋“ค์—๊ฒŒ ์ •๋ง ์ข‹์€ ๊ฐ•์˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ฑ…์€ ๊ตฌ์ž…ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๊ฐ•์˜๋กœ๋„ ๋ถ€์กฑํ•จ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™๋„ค์š”. ๊ทธ๋ ‡์ง€๋งŒ ์ฑ…๊ณผ ๊ฐ™์ด ๋ณด๋ฉด ๋‹ค์‹œ ์ฐพ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ์ค„ ์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค๊ธด ํ•˜๋„ค์š”. ์ฐธ๊ณ ๋กœ ๋ฆฌ์•กํŠธ, ์Šคํ”„๋ง ๋‘˜ ๋‹ค ์„ ์ˆ˜์ง€์‹์ด ์ข€ ํ•„์š”ํ•˜๊ธด ํ•˜์ง€๋งŒ ์ผ์ฃผ์ผ๋งŒ ๊ณต๋ถ€ํ•ด๋„ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ๋“ค์ด๋‹ˆ ํ’€์Šคํƒ์— ๊ด€์‹ฌ์ด ์กฐ๊ธˆ์ด๋ผ๋„ ์žˆ์œผ์‹  ๋ถ„๋“ค์—๊ฒŒ ์ข‹์€ ๊ฐ•์˜๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ๊ฐ•์˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • ๋ฆฌ์•กํŠธ(React) ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค

  • API ์„œ๋ฒ„ ๊ฐœ๋ฐœ

  • JWT ์ธ์ฆ ์ฒ˜๋ฆฌ

  • ๋ฆฌ๋•์Šค ํˆดํ‚ท(Redux Toolkit)

  • ๋ฆฌ์•กํŠธ ์ฟผ๋ฆฌ(React Query)

  • Zustand

'๊ตฌ์Šฌ์ด ์„œ ๋ง์ด์–ด๋„ ๊ฟฐ์–ด์•ผ ๋ณด๋ฐฐ' - ์•„๋Š” ๊ฒƒ๊ณผ ๋งŒ๋“œ๋Š” ๊ฑด ๋‹ค๋ฅด๋‹ค!


๊ธฐ์—…์—์„œ ์ง์›๋“ค์„ ๊ต์œกํ•  ๋•Œ / ์‹ ์ž… ์‚ฌ์›๋“ค ์ง‘์ฒด ๊ต์œก ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ธํ”„๋Ÿฐ์œผ๋กœ!


๋ฆฌ์•กํŠธ๋„ ์•Œ๊ณ  ๋ถ€ํŠธ๋„ ์•„๋Š”๋ฐ ์‹ค์ œ ์—…๋ฌด๋ฅผ ์‹œ์ผœ๋ณด๋ฉด ๊ฒฐ๊ณผ๋ฌผ์ด ์—†๋Š” ์‹ ์ž…๋“ค์„ ๋งŽ์ด ๋ด…๋‹ˆ๋‹ค. ํž˜๋“ค๊ฒŒ ๊ณต๋ถ€ํ–ˆ๋Š”๋ฐ ์จ๋จน์ง€ ๋ชปํ•˜๋Š” ์›์ธ์€ ์•„๋งˆ๋„ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


Chat GPT๋ฅผ ์ด์šฉํ•ด์„œ ์›ํ•˜๋Š” ์ƒ์„ธํ•œ ์ฝ”๋“œ๋Š” ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋Š”๋ฐ ๋ฌธ์ œ๋Š” ์ž์‹ ์ด ์›ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


ํ”„๋กœ์ ํŠธ์˜ ์ง„ํ–‰์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋™์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณผ์ •์ด๋‚˜ ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ์œ„ํ•œ ์—ฐ์Šต๋„ ๋งŽ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


  • ์ˆ˜๊ฐ• ์ „ ์ฃผ์˜ ์‚ฌํ•ญ

    • ์ด ๊ฐ•์˜๋Š” ๋‹จ์ˆœ ๋ฌธ๋ฒ•์ด๋‚˜ ๊ฐœ๋…์ด ์•„๋‹Œ ์ ˆ์ฐจ์™€ ๊ณผ์ •์— ๋Œ€ํ•œ ๊ฐ•์˜์ด๋ฏ€๋กœ React์˜ ๊ธฐ์ดˆ์ ์ธ ๋ฌธ๋ฒ•์€ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ JavaScript ์™€ TypeScript ์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

    • Java ๋ถ€๋ถ„์€ Spring Boot 3.4.x๋ฅผ ์ด์šฉํ•ด์„œ ์ง„ํ–‰๋˜๊ณ  ๊ธฐ์ดˆ์ ์ธ ์ง€์‹์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


ํ•™์Šต ์ค‘ ํ•„์š”ํ•œ ์ถ”๊ฐ€์ ์ธ ์ž๋ฃŒ๋‚˜ ์งˆ๋ฌธ๋“ค์€ '๊ตฌ๋ฉ๊ฐ€๊ฒŒ ์ฝ”๋”ฉ๋‹จhttps://cafe.naver.com/gugucoding' ์นดํŽ˜๋ฅผ ํ†ตํ•ด์„œ ๋ฐฐํฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


2026/01/02

์นด์นด์˜ค ๋กœ๊ทธ์ธ ์„ค์ • ๋ถ€๋ถ„์— ํ™”๋ฉด ๋ณ€๊ฒฝ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


https://docs.google.com/presentation/d/1ndFy0UfqcIHMbSF2Kyjtw3o8Gimx7I9GVeEaE-7lfs8/edit?usp=sharing


๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


2025/12/05

์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์„น์…˜ 3- Todo API ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ ๋ถ€๋ถ„์€ Spring Boot 4.0.0์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ ๊ฐ•์˜๋กœ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


2025/11/26

Spring Boot 4.0.0์„ VSCode๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ Junit5์˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(Intellij์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.).


VSCode๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์‹œ๋ฉด https://blog.naver.com/cookie_00/224088514199 ๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.



2025/06/24

vite ๋ฒ„์ „์ด 7.0.0์œผ๋กœ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ ์•„์ง tailwindcss๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ง€์›ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

npm create vite@latest ๋ฅผ ํ†ตํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜์…จ๋‹ค๋ฉด

package.json ํŒŒ์ผ์„ ์—ด์–ด์„œ ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” vite ๋ฒ„์ „์„ 6์œผ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

"devDependencies": { ... "vite": "^6.0.0" }

์ˆ˜์ •ํ•œ ํ›„์— npm install์„ ์ˆ˜ํ–‰ํ•˜๊ณ 

npm install tailwindcss @tailwindcss/vite

์„ ์‹คํ–‰ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ถ”๊ฐ€๋˜์‹ค ๊ฒ๋‹ˆ๋‹ค.





2025/05/03

Vite์™€ TypeScript๋กœ ์ œ์ž‘๋œ ๋™์˜์ƒ ๊ฐ•์˜๋กœ ์—…๋ฐ์ดํŠธ ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด ๊ฐ•์˜์˜ ๊ตฌ์„ฑ๊ณผ ์ตœ๋Œ€ํ•œ ์œ ์‚ฌํ•˜๊ฒŒ ์ œ์ž‘๋˜์—ˆ์ง€๋งŒ ์•ฝ๊ฐ„์˜ ์ง„๋„์˜ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œ์Šค ์ฝ”๋“œ ์—ญ์‹œ React 19๋ฒ„์ „์— ๋งž๊ฒŒ ๋ชจ๋‘ ์ˆ˜์ •๋˜์–ด์„œ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.






2025/02/24 ์ถ”๊ฐ€

vite์™€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ๋œ ์ „์ฒด ์ฝ”๋“œ๊ฐ€ ์ˆ˜์—…์ž๋ฃŒ๋กœ ๊ฐ•์˜ ๋งจ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


์ฃผ์š” ๋ณ€๊ฒฝ ๋ฒ„์ „

React-Router 7๋ฒ„์ „

React Query 5๋ฒ„์ „

์Šคํ”„๋ง ๋ถ€ํŠธ 3.4.2๋ฒ„์ „

๋“ฑ์ด ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.


vite ์ƒ์„ฑ์‹œ ์ฃผ์˜ํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ์€

https://drive.google.com/drive/folders/1t0NdcBPCN57boutJcjdKODk5DccJUixV?usp=drive_link

์— ์ถ”๊ฐ€ํ•ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.



2024/03/28 ์ถ”๊ฐ€

๋งˆ์ง€๋ง‰ ๊ฐ•์˜์˜ ์ฒจ๋ถ€ ํŒŒ์ผ๋กœ AWS ๋นˆ์ฆˆํ†ก, RDS, S3 ๋ฅผ ์ด์šฉํ•˜๋Š” ์ž๋ฃŒ๋ฅผ ์ถ”๊ฐ€ํ•ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.




์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ์ด์šฉํ•ด์„œ API ์„œ๋ฒ„๋ฅผ ์ œ์ž‘ํ•˜๊ณ , ์ด๋ฅผ ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ˆ์ œ๋“ค์„ ๋‹ค๋ฃจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • Todo ์˜ˆ์ œ - React-Router, Axios, ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ , Querydsl ์„ค์ •

  • ์ƒํ’ˆ ์˜ˆ์ œ - Axios

  • ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ - Redux Toolkit, JWT

  • ์†Œ์…œ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ

  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ตฌํ˜„

  • React Query, Recoil ์‹ค์Šต


To-Do ์˜ˆ์ œ


  • ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ React-Router๋ฅผ ์ด์šฉํ•ด์„œ ์ฃผ์†Œ์ฐฝ์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ํ™”๋ฉด์œผ๋กœ ์ด๋™์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณตํ†ต์˜ ๋ ˆ์ด์•„์›ƒ์„ ์„ค์ •ํ•˜๊ณ , <Outlet>๋“ฑ์„ ์ด์šฉํ•ด์„œ ๊ฐ ๋ชจ๋“ˆ์— ๋งž๋Š” ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ผ์šฐํŒ… ์„ค์ •์€ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ค‘๋ณต์ ์ธ ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ ์ปค์Šคํ…€ ํ›…์„ ์„ค๊ณ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

์ƒํ’ˆ ์˜ˆ์ œ

  • ํŒŒ์ผ ์—…๋กœ๋“œ์™€ ์—…๋กœ๋“œ ๊ณผ์ •, ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๋ชจ๋‹ฌ ์ฒ˜๋ฆฌ ๋“ฑ์„ ์ง์ ‘ ์™„์„ฑํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ์ธ/์†Œ์…œ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ตฌํ˜„



  • ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ์™€ ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ํ†ตํ•ด์„œ ์ธ์ฆ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ด ๋ด…๋‹ˆ๋‹ค.

  • RTK(๋ฆฌ๋•์Šค ํˆดํ‚ท)์„ ์ด์šฉํ•ด์„œ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฟ ํ‚ค๋ฅผ ํ™œ์šฉํ•ด์„œ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ๊ธฐ์–ตํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.


  • JWT๋ฅผ ์ด์šฉํ•ด์„œ Access Token๊ณผ Refresh Token์„ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

  • ๋งˆ์ง€๋ง‰ ์žฅ์—์„œ๋Š” React Query์™€ Zustand์„ ์ด์šฉํ•ด์„œ ์ž‘์„ฑ๋œ ์˜ˆ์ œ๋ฅผ ๋ณ€ํ™˜ํ•ด ๋ด…๋‹ˆ๋‹ค.



โœ… ๊ฐ•์˜์— ์‚ฌ์šฉ๋œ ์†Œ์Šค์ฝ”๋“œ๋Š” ๊ฐ ์„น์…˜์˜ ๋งˆ์ง€๋ง‰ ๊ฐ•์˜์— ์ฒจ๋ถ€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • API ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๋ถ„๋“ค

  • ๋ฆฌ์•กํŠธ ๋ฌธ๋ฒ•์„ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ณ ๋ฏผํ•˜๋Š” ๋ถ„๋“ค

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript)

  • ์Šคํ”„๋ง(Spring)

  • ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์•ˆ๋…•ํ•˜์„ธ์š”
๊ตฌ๋ฉ๊ฐ€๊ฒŒ์ฝ”๋”ฉ๋‹จ์ž…๋‹ˆ๋‹ค.

2,267

๋ช…

์ˆ˜๊ฐ•์ƒ

169

๊ฐœ

์ˆ˜๊ฐ•ํ‰

291

๊ฐœ

๋‹ต๋ณ€

4.8

์ 

๊ฐ•์˜ ํ‰์ 

5

๊ฐœ

๊ฐ•์˜

๊ตฌ๋ฉ๊ฐ€๊ฒŒ์ฝ”๋”ฉ๋‹จ์€ 2015๋…„๋ถ€ํ„ฐ ๊ฐœ๋ฐœ๊ณผ ๊ด€๋ จ๋œ ์ง์ข…์˜ ์‚ฌ๋žŒ๋“ค์˜ ๋ชจ์ž„์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ปค๋ฎค๋‹ˆํ‹ฐ์ž…๋‹ˆ๋‹ค.

๊ฐ•์˜์˜ ์ง„ํ–‰์€ ํ˜„์žฌ ๊ตฌ๋ฉ๊ฐ€๊ฒŒ ์ฝ”๋”ฉ๋‹จ์„ ์šด์˜ํ•˜๊ณ  ์žˆ๋Š” ์ฟ ํ‚ค ๋งค๋‹ˆ์ €๊ฐ€ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

2000๋…„๋ถ€ํ„ฐ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜์˜€๊ณ  ๋ฒค์ฒ˜ ๊ธฐ์—…, ์ค‘์†Œ ๊ธฐ์—…, ๋Œ€๊ธฐ์—… / ํ”„๋ฆฌ๋žœ์„œ ๋“ฑ์˜ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

2010๋…„๋Œ€ ๋ถ€ํ„ฐ๋Š” ์ฃผ๋กœ ๊ธฐ์—…์ฒด ๊ฐ•์˜์™€ ์ปจ์„คํŒ…์„ ์ฃผ์š” ์—…๋ฌด๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ใ„ด๋„ค์ด๋ฒ„ ์นดํŽ˜

 

์ฃผ์š” ์ €์„œ 

์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ์›น ํ”„๋กœ์ ํŠธ

์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ

์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” React

RESTful API ์„œ๋ฒ„ ๊ตฌํ˜„

์Šคํ”„๋ง 6 ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ

์ž๋ฐ” ์›น ๊ฐœ๋ฐœ ์›Œํฌ๋ถ

React Native ์ธ ์•ก์…˜(๋ฒˆ์—ญ)

 

๊ฐœ๋ฐœ/๊ฐ•์˜

์‚ผ์„ฑ SDS ๊ฐœ๋ฐœํŒ€ ๊ทผ๋ฌด

SK ๊ณ ๊ฐํ–‰๋ณต ์ฃผ์‹ํšŒ์‚ฌ ๊ทผ๋ฌด

KT / SK / ํฌ์Šค๋ฐ์ดํ„ฐ / ๊ต๋ณด ์ƒ๋ช… / ์‹ ์„ธ๊ณ„ / ์•„์‹œ์•„๋‚˜ / ๊ฑด๊ฐ•๋ณดํ—˜ ๊ด€๋ฆฌ๊ณต๋‹จ ๋“ฑ๋“ฑ ๊ธฐ์—…์ฒด ๊ฐ•์˜

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

98๊ฐœ โˆ™ (21์‹œ๊ฐ„ 54๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

120๊ฐœ

4.7

120๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • b0i4s๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    b0i4s

    ์ˆ˜๊ฐ•ํ‰ 4

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    18% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์š”์ฆ˜๊ฐ™์ด ํ”„๋ก ํŠธ, ๋ฐฑ ํ•˜๋‚˜๋งŒ ํ•œ๋‹ค๊ณ  ๋˜๋Š”๊ฒŒ ์•„๋‹Œ ์‹œ๊ธฐ์— ํ•ญ์ƒ ์• ๋งคํ•˜๊ฒŒ ํ”„๋ก ํŠธ๋งŒ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ๋ณด๊ณ  ๋ฐฑ๋งŒ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ๋ณด๊ณ  ์ •์ƒ์ ์ธ ํ†ตํ•ฉ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ ๋“ค์—ˆ๋Š”๋ฐ, ํ•œ์ชฝ๋งŒ ์•Œ๊ณ  ๊ณ„์‹  ๋ถ„์ด ์•„๋‹ˆ๋ผ ๋ฉ”์ธ์„ ํ•˜๋‚˜ ๋‘๊ณ  ์–‘์ชฝ์˜ ํ†ตํ•ฉ์ ์ธ ์ธก๋ฉด์—์„œ ๊ถ๊ธˆ์ฆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋˜ ๋ถ„๋“ค์—๊ฒŒ ์ •๋ง ์ข‹์€ ๊ฐ•์˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ฑ…์€ ๊ตฌ์ž…ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๊ฐ•์˜๋กœ๋„ ๋ถ€์กฑํ•จ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™๋„ค์š”. ๊ทธ๋ ‡์ง€๋งŒ ์ฑ…๊ณผ ๊ฐ™์ด ๋ณด๋ฉด ๋‹ค์‹œ ์ฐพ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ์ค„ ์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค๊ธด ํ•˜๋„ค์š”. ์ฐธ๊ณ ๋กœ ๋ฆฌ์•กํŠธ, ์Šคํ”„๋ง ๋‘˜ ๋‹ค ์„ ์ˆ˜์ง€์‹์ด ์ข€ ํ•„์š”ํ•˜๊ธด ํ•˜์ง€๋งŒ ์ผ์ฃผ์ผ๋งŒ ๊ณต๋ถ€ํ•ด๋„ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ๋“ค์ด๋‹ˆ ํ’€์Šคํƒ์— ๊ด€์‹ฌ์ด ์กฐ๊ธˆ์ด๋ผ๋„ ์žˆ์œผ์‹  ๋ถ„๋“ค์—๊ฒŒ ์ข‹์€ ๊ฐ•์˜๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ๊ฐ•์˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    • ๊ตฌ๋ฉ๊ฐ€๊ฒŒ์ฝ”๋”ฉ๋‹จ
      ์ง€์‹๊ณต์œ ์ž

      ์ œ์ž‘ ์˜๋„๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚จ์€ ๊ฐ•์˜๋“ค๋„ ๋„์›€์ด ๋˜์‹œ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  • minho.ha๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    minho.ha

    ์ˆ˜๊ฐ•ํ‰ 2

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ฝ”๋”ฉํ•˜๋ฉด์„œ ์„ค๋ช…ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ๋งŽ์€ ๋„์›€์ด ๋ผ์š”. ๋‹ค๋งŒ ์ œ ์‹ค๋ ฅ์ด ์ด๋ฅผ ๋”ฐ๋ผ๊ฐ€์ง€ ๋ชปํ•  ๋ฟ์ด์ฃ . ํ•˜ํ•˜ํ•˜ํ•˜ํ•˜

    • feelsagood๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      feelsagood

      ์ˆ˜๊ฐ•ํ‰ 1

      โˆ™

      ํ‰๊ท  ํ‰์  5.0

      5

      31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      • ์›๋ฐ์ด๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
        ์›๋ฐ์ด

        ์ˆ˜๊ฐ•ํ‰ 1

        โˆ™

        ํ‰๊ท  ํ‰์  5.0

        5

        30% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

        ์ด๋Ÿฐ ๊ฐ•์˜๊ฐ€ ์ •๋ง ์‹ค๋ฌด์— ๋„์›€์ด ๋˜๋Š” ๊ฐ•์˜๋ผ๊ณ  ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. ๊ฐ•์‚ฌ๋‹˜์˜ ๊ฒฝํ—˜์—์„œ ์šฐ๋Ÿฌ๋‚˜์˜ค๋Š” ํŒ์ด๋‚˜ ์ •๋ณด๋“ค๋„ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ•์˜์— ๋‚˜์˜ค๋Š” ๊ฐ ๊ธฐ์ˆ ๋“ค์˜ ๊นŠ์ด๋Š” ๊ฐ•์˜ ํŠน์„ฑ์ƒ ์กฐ๊ธˆ ์–•์€๊ฐ์ด ์žˆ๋Š”๊ฒƒ ๊ฐ™์€๋ฐ, ๊ฒ€์ƒ‰์ด๋‚˜ ์ฑ…์„ ์ฐธ๊ณ ํ•˜๋‹ˆ๊น ์‰ฝ๊ฒŒ ์ดํ•ด๊ฐ€ ๊ฐ๋‹ˆ๋‹ค. ๋‹จ, ์ € ๋…„์ฐจ์˜ ๊ฐœ๋ฐœ์ž๋Š” ์กฐ๊ธˆ ํž˜๋“ค ์ˆ˜ ๋„ ์žˆ์„๊ฒƒ ๊ฐ™๋„ค์š”.

        • ๊ตฌ๋ฉ๊ฐ€๊ฒŒ์ฝ”๋”ฉ๋‹จ
          ์ง€์‹๊ณต์œ ์ž

          ์ œ์ž‘์˜๋„๋ฅผ ์ดํ•ดํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ง์”€ํ•˜์‹ ๋Œ€๋กœ ๊ธฐ์ดˆ์ ์ธ ๋ถ€๋ถ„์˜ ์„ค๋ช…์— ํ•œ๊ณ„๊ฐ€ ์ข€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค๋ฌด์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๊ณผ๊ฐํ•˜๊ฒŒ ์ค„์ธ๊ฒŒ ์ด์ •๋„๋„ค์š”.. ์•ž์œผ๋กœ ๋‚จ์€ ํ•™์Šตํ•˜์‹œ๋Š” ๋™์•ˆ ์นดํŽ˜๋‚˜ ์ธํ”„๋Ÿฐ์„ ํ†ตํ•ด์„œ ์งˆ๋ฌธ ์˜ฌ๋ฆฌ์‹œ๋ฉด ์•„๋Š”๋งŒํผ ๋„์™€๋“œ๋ฆฌ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

      • Victor๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
        Victor

        ์ˆ˜๊ฐ•ํ‰ 19

        โˆ™

        ํ‰๊ท  ํ‰์  4.9

        4

        16% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

        ์–ด๋А์ •๋„ ์ง€์‹์ด ์žˆ์œผ๋ฉด ๋“ฃ๊ธฐ ํŽธ์•ˆํ•จ. ๋‹จ, ๋‹จ์œ„ํ…Œ์ŠคํŠธ์ฝ”๋“œ์—์„œ ๋กœ๊ทธ์ฐ๊ธฐ๋กœ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๊ฑฐ๋‚˜, 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() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…์‹œ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

        • ์˜ค ๊ทธ๋Ÿฐ์ƒํ™ฉ๋„ ์žˆ๊ตฐ์š” ๋˜ ๋ฐฐ์›Œ๊ฐ‘๋‹ˆ๋‹ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

      ๊ตฌ๋ฉ๊ฐ€๊ฒŒ์ฝ”๋”ฉ๋‹จ๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

      ์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

      ๋น„์Šทํ•œ ๊ฐ•์˜

      ๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

      ์›” โ‚ฉ15,400

      5๊ฐœ์›” ํ• ๋ถ€ ์‹œ

      โ‚ฉ77,000