๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ–ฅ๏ธdevelop8

[Springboot] 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ ๋„์ „๊ธฐ #3. Create(์—”ํ‹ฐํ‹ฐ๋กœ DB ์ €์žฅํ•˜๊ธฐ) ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. DB ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ๋Š” MySQL, ์˜ค๋ผํด, ๋งˆ๋ฆฌ์•„ DB ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ ์ด๋ฒˆ ์‹ค์Šต์—์„œ๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ ๋ฐ›์€ H2 DB๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. JPAJava Persistence API DB๋Š” SQL(Structured Query Language)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Java๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ JPA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DB์— Java๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…๋ น์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JPA๋Š” ์ž๋ฐ” ์–ธ์–ด๋กœ DB์— ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋Š” ๋„๊ตฌ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด ์ง€ํ–ฅ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. JPA์˜ ํ•ต์‹ฌ ๋„๊ตฌ์—”ํ‹ฐํ‹ฐ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ DB๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ๊ฒƒ์œผ๋กœ, ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค. ๋ฆฌํŒŒ์ง€ํ„ฐ๋ฆฌ์—”ํ‹ฐํ‹ฐ๊ฐ€ .. 2025. 1. 11.
[Springboot] ํ‡ด๊ทผ๊ธธ ๋ฒ„์Šค์•ˆ์—์„œ ํ˜ธ๋‹ค๋‹ฅ ๊ณต๋ถ€ํ•˜๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ-๋„๊ตฌ ์ด์ƒํ˜• ์›”๋“œ์ปต ํ˜ธ๊ธฐ๋กญ๊ฒŒ ์Šคํ”„๋ง๋ถ€ํŠธ ์Šคํ„ฐ๋””์— ๋›ฐ์–ด๋“ค์—ˆ์ง€๋งŒ ์กธ๋…ผ + ํ”„๋กœ์ ํŠธ ์ด์Šˆ๋กœ ์ €๋ฒˆ์ฃผ์—๋Š” ์ œ๋Œ€๋กœ ์ฐธ์—ฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค..์‚ฌ์‹ค ์–ด์ œ๊นŒ์ง€ ์กธ์—…๋…ผ๋ฌธ๊ณผ ํ”„๋กœ์ ํŠธ ๋ณด๊ณ ์„œ ๋งˆ๊ฐ์ผ์ด์—ˆ์–ด์„œ ์ด๋ฒˆ ์ฃผ๋„ ๊ณต๋ถ€๋ฅผ ๋ชปํ•œ ๊ฒƒ์€ ๋งˆ์ฐฌ๊ฐ€์ง€์ธ๋ฐ ํ•œ ์ฃผ ๋” ๊ฑด๋„ˆ๋›ฐ๊ธฐ์—๋Š”๋„ˆ๋ฌด ๋ˆˆ์น˜๊ฐ€ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„์Šค ์•ˆ์—์„œ ํ˜ธ๋‹ค๋‹ฅ ๋ฒผ๋ฝ์น˜๊ธฐ ํ•ด๋ณด์•˜๋‹ค. ๋‹ค์Œ ์ฑ…์„ ์ฐธ๊ณ ํ•˜์˜€๋‹ค.  ๋นŒ๋“œ ๋„๊ตฌ ์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ๋ ˆํฌ๋ฅผ ๋ณด๋ฉด gadle์ด๋ผ๋Š” ํด๋”๊ฐ€ ๊ผญ ๋ณด์˜€๋Š”๋ฐ ๋„๋Œ€์ฒด ์ €๊ฒŒ ๋ญ”๊นŒ ํ•ญ์ƒ ๊ถ๊ธˆํ–ˆ์—ˆ๋‹ค(๋”ฐ๋กœ ์•Œ์•„๋ณผ ์ •๋„๋กœ ๊ถ๊ธˆํ•˜์ง€๋Š” ์•Š๊ณ  ๊ทธ๋ƒฅ ๋ณผ๋•Œ๋งŒ ์ž ๊น ๊ถ๊ธˆํ–ˆ๋‹ค).  ๋งˆ์นจ  ์ด ์ฑ… 2์žฅ์—์„œ ๋„๊ตฌ ์„ ํƒ์„ ๋‹ค๋ฃจ๋ฉด์„œ, ๊ทธ๋ ˆ์ด๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…์„ ํฌํ•จํ•˜์—ฌ 2์žฅ์„ ๋จผ์ € ์ฝ์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ๋ฉ”์ด๋ธ(Maven)๊ณผ ๊ทธ๋ ˆ์ด๋“ค(gradle)์€ ๋นŒ๋“œ ๋„๊ตฌ์ด๋‹ค. ๊ณผ๊ฑฐ์—๋Š” ๋” ๋งŽ์€ ๋นŒ๋“œ ๋„๊ตฌ๋“ค์ด ์žˆ์—ˆ์ง€๋งŒ, ํ˜„์žฌ๋Š”.. 2024. 12. 7.
[๊นƒ&๊นƒํ—ˆ๋ธŒ] ๊ทธ๋ฆผ์œผ๋กœ ์•Œ์•„๋ณด๋Š” Git HEAD Git์˜ ๋น„๋ฐ€์„ ํ’€์–ด๋ณด์ž: HEAD์”จ์˜ ๊ธฐ๋ฌ˜ํ•œ ๋ชจํ—˜Git์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด "HEAD"๋ผ๋Š” ๊ฒƒ์„ ์ข…์ข… ๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด๊ฑฐ๋‚˜, ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋“ฑ์žฅํ•˜๋Š” HEAD. ๋„๋Œ€์ฒด ๋ญ˜ ์˜๋ฏธํ•˜๋Š”๊ฑด์ง€ ๊ทธ ์ •์ฒด๊ฐ€ ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋„ ๊ณ„์‹ค๊ฒ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” HEAD์˜ ๋ณธ์งˆ์„ ๊ทธ๋ฆผ๊ณผ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ์„ค๋ช…ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.๐Ÿ˜Ž1. HEAD์”จ์˜ ์ฒซ ๊ฑธ์Œ, main ๋ธŒ๋žœ์น˜HEAD์”จ๊ฐ€ Git ์„ธ์ƒ์— ์ฒซ ๋ฐœ์„ ๋‚ด๋””๋Ž ์Šต๋‹ˆ๋‹ค. ์–ด์ฉŒ๋‹ค๋ณด๋‹ˆ ๋ฌผ ์œ„์—์„œ ์Šคํฐ๋œ HEAD์”จ๋ฅผ ์œ„ํ•ด, ๋ฐœํŒ์„ ๋งŒ๋“ค์–ด์ค์‹œ๋‹ค. ๋ฐœํŒ์€ ์ปค๋ฐ‹์„ ํ†ตํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์ด ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค HEAD ์”จ๊ฐ€ ์žˆ๋Š” ๋ธŒ๋žœ์น˜์— ๋ฐœํŒ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๐Ÿ’ก์ •๋ฆฌ๋ธŒ๋žœ์น˜๋งŒ ์žˆ์œผ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. commit์„ ํ†ตํ•ด ๋ธŒ๋žœ์น˜์— ์ƒˆ๋กœ์šด ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.. 2024. 12. 1.
[Springboot] 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ ๋„์ „๊ธฐ #2. Create ํ”„๋กœ์ ํŠธ ๋ฒ„์ „ ๋ณ€๊ฒฝSpring Initializr์—์„œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋•Œ 3.4.0 ๋ฒ„์ „์œผ๋กœ ์ƒ์„ฑํ•˜์˜€๋Š”๋ฐ, ๊ต์žฌ๋Š” 3.1.0 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ™œํ•œ ์ง„ํ–‰์„ ์œ„ํ•ด ์Šคํ”„๋ง๋ถ€ํŠธ ๋ฒ„์ „ ๋ณ€๊ฒฝ์„ ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง๋ถ€ํŠธ ๋ฒ„์ „์€ build.gradle ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์—ฌ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„ ๋ถ€๋ถ„์„ 3.1.0์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , ์˜†์— ๋‚˜ํƒ€๋‚˜๋Š” ์ฝ”๋ผ๋ฆฌ ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๋ฉด ๋ฒ„์ „ ๋ณ€๊ฒฝ ์™„๋ฃŒ์ž…๋‹ˆ๋‹ค.    ํผ ๋ฐ์ดํ„ฐHTML ์š”์†Œ์ธ ํƒœ๊ทธ์— ์‹ค๋ ค ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ  ํƒœ๊ทธ๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์–ด๋””๋กœ(where), ์–ด๋–ป๊ฒŒ(how) ๋ณด๋‚ผ์ง€ ๋“ฑ์„ ์ ์–ด์„œ, ์„œ๋ฒ„์— ์ „์†กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. DTOData Transfer Object, ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฐ์ฒดํƒœ๊ทธ์— ์‹ค์–ด ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๋Š” ์„œ๋ฒ„์˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๊ฐ์ฒด์— ๋‹ด์•„.. 2024. 11. 23.
[Springboot] 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ ๋„์ „๊ธฐ #1. ์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ ๋ฐฑ์—”๋“œ๊ฐ€ ๋„ˆ๋ฌด ์‹ซ๊ณ  ๋งจ๋‚  ๋ฐฑ์—”๋“œ๋Š” ์‹ซ์–ด ์ ˆ๋Œ€ ์•ˆํ• ๊ฑฐ์•ผ ์™ธ์ณค์ง€๋งŒ ์ปจํผ๋Ÿฐ์Šค ๋กœ๋˜ ์ „๋ถ€ ๋‹ค ๊ด‘ํƒˆํ•ด์„œ ๋ˆ ์ฃผ๊ณ  ๋“ค์„ ์ˆ˜ ์žˆ๋Š” ์ปจํผ๋Ÿฐ์Šค๋Š” ๋ฐฑ์—”๋“œ๋ฟ์ด์˜€๊ณ  ์—ฌ๊ธฐ์ €๊ธฐ ๋‹ค๋‹ˆ๋‹ค๋ณด๋‹ˆ ๋ฐฑ์—”๋“œ๋„ ํ• ๋งŒํ•  ๊ฒƒ๊ฐ™๊ณ  ๊ทธ์™€์ค‘์— ์–ธ๋‹ˆ๋“ค ๋‹ค ์Šคํ”„๋ง๋ถ€ํŠธ ์Šคํ„ฐ๋”” ํ•œ๋‹ค๋Š”๋ฐ ๋‚˜๋งŒ ์•ˆํ•˜๋ฉด ์†Œ์™ธ๊ฐ ๋“ค๊ณ  ๋ˆˆ๋ฌผ์ด ๋‚  ๊ฒƒ ๊ฐ™์•„์„œ ์–ด์ฉŒ๋‹ค๋ณด๋‹ˆ ์‹œ์ž‘ํ•˜๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ ๋„์ „๊ธฐ ์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ์œ„ํ•œ ํ™˜๊ฒฝ ์„ค์ •1. JDK ์„ค์น˜๋จผ์ € JDK ๋ฒ„์ „๋ถ€ํ„ฐ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง„์งœ  ์‹œ์ž‘๋ถ€ํ„ฐ ์ด๋Ÿฌ๊ธฐ ์žˆ๋‚˜...์‹ถ์—ˆ๋Š”๋ฐ JDK๊ฐ€ ์—†์œผ๋ฉด ์ด๋ ‡๊ฒŒ ๋‚˜์˜จ๋‹ค๋”๋ผ๊ตฌ์š”..๋ถ„๋ช… ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋„ ํ–ˆ์–ด์„œ JDK๊ฐ€ ์—†์„  ์ˆ˜๊ฐ€ ์—†์„ ํ…๋ฐ๐Ÿง. ๋งŽ์ด ์ˆ˜์ƒํ•˜์ง€๋งŒ ์ผ๋‹จ ์—†๋‹ค๋‹ˆ๊นŒ OpenJDK ์„ค์น˜๋ฅผ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. (์„ค์น˜ ๋งํฌ ์ž๋™ ์™„์„ฑ๋„ ๋˜๋Š”๋ฐ ์ƒ๋‹นํžˆ ์ˆ˜์ƒํ•˜๋‹ค) 21-LTS๊ฐ€ ์žˆ๊ณ , 17-LTS๊ฐ€ ์žˆ๋Š”๋ฐ, ์ผ๋‹จ .. 2024. 11. 22.
[Next.js] ๋กœ๊ทธ์ธ ๋’ค๋กœ๊ฐ€๊ธฐ๋กœ ์ ‘๊ทผ ์ œํ•œํ•˜๊ธฐ-router.push vs router.replace ์ธ๊ณ„๋ฐ›์€ ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์ธํ•˜๋˜ ์ค‘ ์žฌ๋ฐŒ๋Š” ์ƒํ™ฉ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ ํ›„ ํ™ˆ ํ™”๋ฉด์—์„œ ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด, ๋‹ค์‹œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐ€๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ์ƒ๋‹จ์˜ GNB(๊ธ€๋กœ๋ฒŒ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”)๋ฅผ ๋ณด๋ฉด, ๋กœ๊ทธ์ธ ์ƒํƒœ์ž„์ด ๋ถ„๋ช…ํ•œ๋ฐ, ์ฝ˜ํ…์ธ  ์˜์—ญ์—์„œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๋ถ€์ž์—ฐ์Šค๋Ÿฌ์šด ์ƒํ™ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋ฉด, ๋กœ๊ทธ์ธ ์ƒํƒœ์—์„œ๋Š” ๋’ค๋กœ๊ฐ€๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ๋„ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฌ์šด ํ๋ฆ„์ผํ…๋ฐ, ์ด ์ƒํ™ฉ์€ UX์™€ ๋ณด์•ˆ ์ธก๋ฉด์—์„œ ์ •์ƒ์ ์ธ ์„œ๋น„์Šค ํ”Œ๋กœ์šฐ๋Š” ์•„๋‹ˆ๋ผ๊ณ  ํŒ๋‹จํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋’ค๋กœ๊ฐ€๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ๋„ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์—†๋„๋ก ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ ‘๊ทผ ์ œํ•œ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ฒ˜์Œ์—๋Š” ํ† ํฐ ์œ ๋ฌด๋ฅผ ํ™•์ธํ•ด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ–ˆ์Šต๋‹ˆ๋‹ค.์ด์ „ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๊ถŒํ•œ ๋ณ„ ์ ‘.. 2024. 11. 19.