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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ384

[DevCourse] ์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค 39์ผ์ฐจ ์˜ค๋Š˜์€ ์›น ๊ฐœ๋ฐœ์˜ ๊ธฐ์ดˆ ๊ฐœ๋…๊ณผ ์ž๋ฐ”์˜ ๊ด€๊ณ„๋ฅผ ๋ฐฐ์šฐ๋ฉด์„œ ์›น์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ „๋ฐ˜์ ์ธ ํ๋ฆ„์„ ์ •๋ฆฌํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด์—ˆ๋‹ค. ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ๊ด€๊ณ„, ์›น ์„œ๋ฒ„์™€ WAS์˜ ์ฐจ์ด, HTTP ํ”„๋กœํ† ์ฝœ์˜ ๊ตฌ์กฐ๊นŒ์ง€ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ค‘์š”ํ•œ ๊ธฐ์ดˆ๋“ค์„ ํ•œ๊บผ๋ฒˆ์— ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.๐Ÿ“Œ ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ ์ •๋ฆฌ๐Ÿ”ท ์›น๊ณผ ์ž๋ฐ”์˜ ๊ด€๊ณ„์›น ํ™˜๊ฒฝ์—์„œ ์ž๋ฐ”๋Š” ์„œ๋ฒ„์‚ฌ์ด๋“œ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ,Servlet๊ณผ JSP๋ฅผ ํ†ตํ•ด ๋™์ ์ธ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑธ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์› ๋‹ค. ๐Ÿ”ถ ์›น ์„œ๋ฒ„์™€ WAS์›น ์„œ๋ฒ„๋Š” ์ •์  ํŒŒ์ผ(HTML, ์ด๋ฏธ์ง€ ๋“ฑ)์„ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ํ•˜๊ณ , WAS(Web Application Server)๋Š” ๋™์ ์ธ ๋กœ์ง(๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง)์„ ์ฒ˜๋ฆฌํ•˜๋ฉฐ Servlet/JSP ์ปจํ…Œ์ด๋„ˆ๋กœ์„œ์˜ ์—ญํ• ์„ ํ•œ๋‹ค๋Š” ์ ์ด ํฅ๋ฏธ๋กœ์› .. 2025. 6. 2.
[DevCourse] ์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค 38์ผ์ฐจ ์˜ค๋Š˜์€ ๊ทธ๋™์•ˆ ๋ฐฐ์› ๋˜ ์ž๋ฐ” ๋ฌธ๋ฒ•๋“ค์„๊ธฐ๋ณธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋ณต์Šตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•™์Šตํ–ˆ๋‹ค.๋‹จ์ˆœํžˆ ๋ฌธ๋ฒ•๋งŒ ๋‹ค์‹œ ๋ณด๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด ๋ณต์Šตํ•˜๋‹ˆ์ด์ „์— ๋ฐฐ์› ๋˜ ๊ฐœ๋…๋“ค์ด ์‹ค์ „์— ๋” ๊ฐ€๊น๊ฒŒ ๋‹ค๊ฐ€์˜ค๋Š” ๋А๋‚Œ์ด์—ˆ๋‹ค.๐Ÿ“˜ ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ ์ •๋ฆฌ๐Ÿ”ท ์ž๋ฐ” ๋ณต์Šต (์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ค‘์‹ฌ)๋ณ€์ˆ˜ ์„ ์–ธ, ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ ๋“ฑ ๊ธฐ์ดˆ ๋ฌธ๋ฒ•๋“ค์„์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋‹ค์‹œ ํ™•์ธํ–ˆ๋‹ค.ํŠนํžˆ ๋ฐฐ์—ด๊ณผ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด ํ•ฉ๊ณ„, ์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’ ์ฐพ๊ธฐ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ๋ฌธ๋ฒ• ๋ณต์Šต๊ณผ ๋™์‹œ์— ํ™œ์šฉ ๋ฐฉ๋ฒ•์„ ํ•œ ๋ฒˆ์— ๋‹ค์งˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค.๐Ÿงก ๋А๋‚€ ์ ์˜ค๋Š˜์€ ์ž๋ฐ” ๊ธฐ์ดˆ๋ฅผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋ณต์Šตํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.์ง์ ‘ ์ฝ”๋“œ๋กœ ์จ๋ณด๋‹ˆ๊นŒ ํ™•์‹คํžˆ ๋จธ๋ฆฌ์— ๋” ์ž˜ ๋‚จ์•˜๋‹ค.“์•„, ์ด๋•Œ ์ด๋ ‡๊ฒŒ ์จ์•ผ๊ฒ ๊ตฌ๋‚˜”๋ผ๋Š” ๋ถ€๋ถ„๋“ค์ด ํ•˜๋‚˜์”ฉ ์ •๋ฆฌ๋˜๋Š” ๊ธฐ๋ถ„์ด์—ˆ๋‹ค. ์•ž์œผ๋กœ๋„ ๋งค์ผ .. 2025. 6. 2.
๐Ÿ”ง ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ JPA ํ•ต์‹ฌ ์ •๋ฆฌ ์›น ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๋‹ค ๋ณด๋ฉด ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ผ์ด ์ •๋ง ๋งŽ์Šต๋‹ˆ๋‹ค.ํšŒ์›๊ฐ€์ž… ์‹œ ์ž…๋ ฅํ•œ ์ •๋ณด, ๊ฒŒ์‹œํŒ์˜ ๊ธ€๊ณผ ๋Œ“๊ธ€, ์ฃผ๋ฌธ ๋‚ด์—ญ ๋“ฑ ์ˆ˜๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๊ฐ€์ฃ . ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋Ÿฐ ๋ฐ์ดํ„ฐ๋Š” ์–ด๋””์—, ์–ด๋–ป๊ฒŒ ์ €์žฅ๋˜๊ณ  ๊ด€๋ฆฌ๋ ๊นŒ์š”? Spring Boot๋กœ API๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด , ์ด์ œ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์—ฐ๋™์ž…๋‹ˆ๋‹ค.๋‹จ์ˆœํžˆ save()๋งŒ ํ•œ๋‹ค๊ณ  ๋๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, JPA์˜ ๋™์ž‘ ์›๋ฆฌ, Entity์™€ Repository ์„ค๊ณ„, ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘, ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ „๋žต๊นŒ์ง€ ํ•จ๊ป˜ ์ดํ•ดํ•ด์•ผ ์•ˆ์ •์ ์ด๊ณ  ํšจ์œจ์ ์ธ ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์‹ค๋ฌด์—์„œ ์ž์ฃผ ๋งˆ์ฃผ์น˜๋Š” ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์˜ ํ•ต์‹ฌ ๊ฐœ๋…๋“ค์„ ์ค‘์‹ฌ์œผ๋กœ, JPA์™€ ํ•จ๊ป˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•ด .. 2025. 5. 30.
[DevCourse] ์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค 37์ผ์ฐจ ์˜ค๋Š˜์€ ์กฐ์ธ(JOIN)์— ๋Œ€ํ•ด ๋‹ค์‹œ ๋ณต์Šตํ•˜๋ฉฐ ๋” ๊นŠ๊ฒŒ ํ•™์Šตํ•˜๊ณ , ์„œ๋ธŒ์ฟผ๋ฆฌ(Subquery) ๊ฐœ๋…์„ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์› ๋‹ค.๊ธฐ์กด์— ์ตํ˜”๋˜ ์กฐ์ธ์„ ๋‹ค์‹œ ์ •๋ฆฌํ•˜๋ฉด์„œ ๋†“์น˜๊ณ  ์žˆ๋˜ ๋ถ€๋ถ„๋“ค์„ ์ฑ„์›Œ๋ณผ ์ˆ˜ ์žˆ์—ˆ๊ณ ,์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์ฒ˜์Œ์—” ์กฐ๊ธˆ ๋‚ฏ์„ค์—ˆ์ง€๋งŒ ์ง์ ‘ ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ต์ˆ™ํ•ด์กŒ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ ์˜ค๋Š˜์€ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์ด ๊ฝค ์žฌ๋ฏธ์žˆ์—ˆ๋‹ค. ๐Ÿ“˜ ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ ์ •๋ฆฌ๐Ÿ”ท ์กฐ์ธ ์–ด์ œ ๊ฐ€๋ณ๊ฒŒ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ INNER JOIN, LEFT OUTER JOIN, SELF JOIN ๋“ฑ์„ ๋‹ค์‹œ ํ•™์Šตํ–ˆ๋‹ค.๋‹จ์ˆœํžˆ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐœ๋…์„ ๋„˜์–ด์„œ,์–ด๋–ค ์กฐ๊ฑด์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฐํ•ฉํ•ด์•ผ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ๋‹ค์–‘ํ•œ ์‹ค์Šต์„ ํ†ตํ•ด ๋‹ค์‹œ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํŠนํžˆ ON, USING, NATURAL JOIN ๋“ฑ์˜ .. 2025. 5. 29.
๐ŸŒฑ Spring ํ•ต์‹ฌ ๊ฐœ๋… ๋งˆ์Šคํ„ฐํ•˜๊ธฐ ๋ชฉ์ฐจ Spring์€ ๋‹จ์ˆœํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„, ์˜์กด์„ฑ ์ฃผ์ž…, AOP, ์„ค์ • ์œ ์—ฐ์„ฑ ๋“ฑ ์—ฌ๋Ÿฌ ์ฒ ํ•™๊ณผ ๊ธฐ์ˆ ์ด ๋…น์•„ ์žˆ๋Š” ์ข…ํ•ฉ ๊ฐœ๋ฐœ ํ”Œ๋žซํผ์ด์ฃ . Spring Boot๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์‹  ๋ถ„์ด๋ผ๋ฉด @Autowired, @Component ๊ฐ™์€ ์–ด๋…ธํ…Œ์ด์…˜์€ ์ต์ˆ™ํ•˜์ง€๋งŒ“๋„๋Œ€์ฒด ๋‚ด๋ถ€์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š” ๊ฑธ๊นŒ?” ๋ผ๋Š” ์˜๋ฌธ์ด ํ•œ ๋ฒˆ์ฏค์€ ๋“ค์—ˆ์„ ๊ฒ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Spring์˜ ํ•ต์‹ฌ ๊ฐœ๋…๋“ค์„ ์‹ค์ œ ์ฝ”๋“œ ์˜ˆ์‹œ์™€ ์‹ค๋ฌด ํ™œ์šฉ ํฌ์ธํŠธ ์ค‘์‹ฌ์œผ๋กœ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค๐Ÿง  ์ œ์–ด์˜ ์—ญ์ „(IoC)๊ณผ ์˜์กด์„ฑ ์ฃผ์ž…(DI)IoC(Inversion of Control) ๋ž€?IoC(Inversion of Control)๋Š” ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์˜์กด์„ฑ ๊ด€๋ฆฌ๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ์ด .. 2025. 5. 29.
[DevCourse] ์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค 36์ผ์ฐจ ์˜ค๋Š˜์€ SQL์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋“ค๊ณผ ์กฐ์ธ์— ๋Œ€ํ•ด ์‹ค์Šต ์œ„์ฃผ๋กœ ํ•™์Šตํ–ˆ๋‹ค.์ด์ „์— ์ด๋ฆ„๋งŒ ๋“ค์–ด๋ดค๋˜ ํ•จ์ˆ˜๋“ค์„ ์ง์ ‘ ์จ๋ณด๊ณ , ์กฐ์ธ์„ ํ†ตํ•ด ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•ด ๋ณด๋Š” ๊ณผ์ •์„ ํ†ตํ•ดSQL์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.๐Ÿ“˜ ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ ์ •๋ฆฌ๐Ÿ”ท ์ฃผ์š” ํ•จ์ˆ˜๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ, ์ˆ˜ํ•™ ๊ณ„์‚ฐ, ๋‚ ์งœ ๊ณ„์‚ฐ ๋“ฑ ๋‹ค์–‘ํ•œ ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ๋ฐฐ์› ๋‹ค.SUBSTRING, CONCAT, ROUND, NOW() ๊ฐ™์€ ํ•จ์ˆ˜๋“ค์„ ์ง์ ‘ ์จ๋ณด๋ฉด์„œ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ฐ€๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํ˜”๋‹ค.ํŠนํžˆ CASE WHEN ๊ฐ™์€ ์กฐ๊ฑด๋ฌธ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฅ˜ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ผ ์ˆ˜ ์žˆ์–ด ์ธ์ƒ ๊นŠ์—ˆ๋‹ค. ๐Ÿ”ธ ์กฐ์ธ (JOIN)INNER JOIN, OUTER JOIN, SELF JOIN์„ ํ†ตํ•ด ํ…Œ์ด๋ธ” ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ–ˆ๋‹ค.ํ•˜๋‚˜์˜ ํ…Œ์ด.. 2025. 5. 28.
๋ฐ˜์‘ํ˜•