์ „์ฒด ๊ธ€

Spring

[Spring Boot] Graceful shutdown์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์ข…๋ฃŒํ•˜๊ธฐ

๋ฌธ์ œ ์ƒํ™ฉ๋ฐฐํฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„๋ฅผ ๋‚ด๋ฆด ๋•Œ ํ•˜ํ•„ ์„œ๋ฒ„๊ฐ€ ์–ด๋–ค ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?ํ•ด๋‹น ์š”์ฒญ์€ ๋๊นŒ์ง€ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์‹คํŒจํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.ํŠนํžˆ ๋ฐฐํฌ๊ฐ€ ์žฆ์€ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ๋”์šฑ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. [๋ณดํ‹€] ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์ •๋ง ์งง์€ ์ฃผ๊ธฐ๋กœ ๋ฐฐํฌ๋ฅผ ํ•ด์™”๋Š”๋ฐ, ์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์— ๋Œ€ํ•ด์„œ ์–ด๋– ํ•œ ์ฒ˜๋ฆฌ๋„ ํ•˜์ง€ ์•Š๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.๋˜ํ•œ ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๋กœ์ง์ด ๋Š˜์–ด๋‚˜๋ฉด์„œ, ์„œ๋ฒ„๋ฅผ ๋‚ด๋ฆด ๋•Œ ํ•˜ํ•„ ๋น„๋™๊ธฐ ํ์— ๋“ค์–ด๊ฐ€ ์žˆ๋˜ ์š”์ฒญ๋“ค์„ ๋ชจ๋‘ ์žƒ์–ด๋ฒ„๋ฆด ๊ฒƒ์ด๋ผ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.์‹ค์ œ๋กœ ๊ทธ๋Ÿด๊นŒ?์‹ค์ œ๋กœ ์š”์ฒญ๋“ค์„ ๋ชจ๋‘ ์žƒ์–ด๋ฒ„๋ฆด์ง€ ํ™•์ธ์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ๊ฐ„๋‹จํ•˜๊ฒŒ ์š”์ฒญ์ด ์—„์ฒญ ๋Š๋ฆฌ๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š” api ํ•˜๋‚˜๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.์Šค๋ ˆ๋“œ๋ฅผ 20์ดˆ๊ฐ„ sleep ์‹œํ‚จ ํ›„ "Request Success!"๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”..

๊ฐœ๋ฐœ์ผ์ง€/๊ธฐ๋ก

Spring ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ์ ์šฉํ•˜๊ธฐ

[๋ณดํ‹€] ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์Šคํ”„๋ง ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ ์šฉํ•˜๊ฒŒ ๋œ ์ด์œ ์™€ ๊ณผ์ •์„ ๊ธฐ๋กํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ ํ”„๋กœ์ ํŠธ์šฐ์„  ๋Š˜ ๊ทธ๋ž˜์™”๋“ฏ์ด ๋‹จ์ผ ํ”„๋กœ์ ํŠธ๋กœ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.ํฐ ๊ทœ๋ชจ์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ๊ณ , ์•„์ง์€ ํ•˜๋‚˜์˜ ์„œ๋ฒ„๋กœ ์šด์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ผ ํ”„๋กœ์ ํŠธ๋กœ ๊ตฌ์„ฑํ•ด๋„ ํฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ์‹ค ์„œ๋น„์Šค ์šด์˜์„ ์ƒ๊ฐํ–ˆ์„ ๋•Œ๋Š”, ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค ์‚ฌ์–‘์„ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ•˜๋˜์ง€ (aws ํ”„๋ฆฌํ‹ฐ์–ด ์‚ฌ์šฉ ์ค‘..) ๋‹จ์ผ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณดํ‹€์€ ์†Œ๊ฐœํŒ… ์„œ๋น„์Šค๋กœ, ์ผ์ • ์‹œ๊ฐ„์— ์œ ์ €๋“ค์„ ๋งค์นญํ•ด ์ฃผ๋Š” ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.์ด ์ž‘์—…์€ ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ์—๋Š” ์œ ์ €์˜ ์ˆ˜๋„ ์ ๊ณ  ๋งค์นญํ•˜๋Š” ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ๋„..

๊ฐœ๋ฐœ์ผ์ง€/ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

[JPA] 1:N fetchJoin๊ณผ limit์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์ƒํ•œ OutOfMemory ๋ฌธ์ œ ํ•ด๊ฒฐ

๋ฌธ์ œ ๐Ÿ‘ฟํ†ฐ์บฃ ์„ฑ๋Šฅํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • API์— ๋Œ€ํ•˜์—ฌ ํ•œ ๋ฒˆ์— ๋งŽ์€ ์š”์ฒญ์„ ๋ณด๋ƒˆ๊ณ , ํ‰์†Œ์— ์ž˜ ๋™์ž‘ํ•˜๋˜ API๊ฐ€ OutOfMemoryError๋ฅผ ๋˜์ง€๋ฉด์„œ ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด ์‹คํŒจํ•˜์˜€๋‹ค.์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๊ณผ์ •์„ ๊ฑฐ์ณค๋Š”์ง€ ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ž ๐Ÿง ์ผ๋‹จ ๊ฒฐ๋ก ๋ถ€ํ„ฐ..๊ทธ ์ „์— ๊ธ€์ด ๊ธธ์–ด์งˆ ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ ๊ฒฐ๋ก  ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด,1:N ์—ฐ๊ด€๊ด€๊ณ„์—์„œ fetchJoin๊ณผ limit ๊ตฌ๋ฌธ์„ ํ•จ๊ป˜ ์“ฐ๋ฉด ์œ„ํ—˜ํ•˜๋‹ค! ๋ฌธ์ œ ์ƒํ™ฉํ†ฐ์บฃ ์„ฑ๋Šฅํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด Jmeter๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ , 1์ดˆ์— 500๋ฒˆ์˜ ๋กœ๋“œ๋งต ๋ชฉ๋ก ์กฐํšŒ ์š”์ฒญ์„ ๋ณด๋‚ด๋„๋ก ์„ค์ •ํ–ˆ๋‹ค.๊ทธ๋Ÿฐ๋ฐ 500๋ฒˆ์˜ ์š”์ฒญ์ด ๋ชจ๋‘ ์‹คํŒจํ–ˆ๊ณ , ์–ด๋–ค ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๊ฐ€ ๋‹ด๊ฒจ์žˆ๋Š”์ง€ ํ™•์ธํ–ˆ๋‹ค.๋ฉ”์„ธ์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค."Handler dispatch failed: java.lang.OutOfMem..

์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค/ํšŒ๊ณ 

์šฐํ…Œ์ฝ” ๋ ˆ๋ฒจ3 ํŒ€ ํ”„๋กœ์ ํŠธ ๋Œ์•„๋ณด๊ธฐ

์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค ๋ ˆ๋ฒจ3๋Š” ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ”๋กœ ์ €๋ฒˆ์ฃผ์— ๋ ˆ๋ฒจ3๋ฅผ ๋ฌด์‚ฌํžˆ,, ๋๋งˆ์ณค๋‹ค. ๋ ˆ๋ฒจ3์—์„œ๋Š” ์ •๋ง ์ƒ์ƒ ์ด์ƒ์œผ๋กœ ๋งŽ์€ ๊ฒƒ์„ ๊ฒฝํ—˜ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๋Ÿฐ์ง€ ๋‘ ๋‹ฌ์ด๋ผ๋Š” ์‹œ๊ฐ„์ด ์ •๋ง ์–ด๋–ป๊ฒŒ ์ง€๋‚˜๊ฐ„์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค. ์ƒˆ๋กœ์šด ๊ฒƒ๋“ค์„ ๋จธ๋ฆฌ์— ์–ด๋–ป๊ฒŒ๋“  ๊ตฌ๊ฒจ๋„ฃ์œผ๋ ค๊ณ  ์—ด์‹ฌํžˆ ๋ชฐ์ž…ํ–ˆ๋˜ ์‹œ๊ฐ„์ด์˜€๋‹ค. ๋‘ ๋‹ฌ ๋™์•ˆ ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค ๐Ÿ˜™ ํŒ€ ๋นŒ๋”ฉ ์ด๋ฒˆ ํŒ€ ํ”„๋กœ์ ํŠธ์—์„œ ํ–ˆ๋˜ ๊ฒฝํ—˜๋“ค ์ค‘ ์žฌ๋ฐŒ๊ณ  ์‹ ์„ ํ–ˆ๋˜ ๊ฒฝํ—˜์€ ํŒ€ ๋นŒ๋”ฉ์ด๋‹ค. ๋‚˜ ์‚ฌ์šฉ์„ค๋ช…์„œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ์„œ๋กœ๋ฅผ ์†Œ๊ฐœํ•˜๊ณ , ํŒ€ ๋ฌธํ™” ๋ฐ ๊ทธ๋ผ์šด๋“œ ๋ฃฐ๋„ ํ•จ๊ป˜ ์ •ํ–ˆ๋‹ค. ์ง€๊ธˆ ๋‹ค์‹œ๋ณด๋‹ˆ ์ž˜ ์ง€์ผœ์ง€๋Š” ๊ฒƒ๋„ ๋งŽ์ง€๋งŒ, ์ง€์ผœ์ง€์ง€ ์•Š๋Š” ๊ฒƒ๋“ค๋„ ์žˆ๋‹ค. ๋‹ค์‹œ ์žฌ์ •๋น„ํ•˜๋Š” ์‹œ๊ฐ„๋„ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒ€๋ผ๋ฆฌ ์นœํ•ด์ง€๋ผ๋Š” ์˜๋ฏธ๋กœ ํŒ€๋ณ„๋กœ ๊ฐ„๋‹จํ•œ ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ–ˆ๋Š”๋ฐ, 1๋“ฑํ•ด์„œ ๋ฐฐ๋ฏผ ..

Spring

[JPA] ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘ ์ •๋ฆฌ

JPA์—์„œ ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘์ด๋ž€ ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์ „์—, ์™œ ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘์ด๋ผ๋Š” ๊ฒƒ์„ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„์•ผ ํ•œ๋‹ค. ๐Ÿค” ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘์„ ์™œ ํ•ด์•ผ ํ• ๊นŒ? ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด ๊ฐ์ฒด์ง€ํ–ฅ ํŒจ๋Ÿฌ๋‹ค์ž„๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŒจ๋Ÿฌ๋‹ค์ž„์ด ์ผ์น˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ด๋Ÿฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ” ์„ค๊ณ„๋Œ€๋กœ ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•œ๋‹ค๋ฉด ๊ฐ์ฒด ์ค‘์‹ฌ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜๊ณ , ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์ ์ธ ์ฝ”๋“œ๊ฐ€ ๋  ์ˆ˜๋ฐ–์— ์—†๋‹ค. ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด์ž. 1. Actor ํ…Œ์ด๋ธ”๊ณผ Musical ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค. 2. ๋ฐฐ์šฐ๋Š” ํ•˜๋‚˜์˜ ๋ฎค์ง€์ปฌ์— ์ถœ์—ฐํ•  ์ˆ˜ ์žˆ๋‹ค. 3. ๋ฐฐ์šฐ์™€ ๋ฎค์ง€์ปฌ์€ ๋‹ค๋Œ€์ผ ๊ด€๊ณ„์ด๋‹ค. ์œ„์™€ ๊ฐ™์€ ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํ…Œ์ด๋ธ”์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๊ฐ์ฒด๋กœ ๋ฐ”๋กœ ์˜ฎ๊ฒจ์„œ ์„ค๊ณ„ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—”ํ‹ฐํ‹ฐ..

์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค/ํšŒ๊ณ 

์šฐํ…Œ์ฝ” ๋ ˆ๋ฒจ2 ์ธํ„ฐ๋ทฐ ํšŒ๊ณ 

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

Spring

Dao์™€ Repository์— ๋Œ€ํ•ด์„œ...

์šฐํ…Œ์ฝ” ๋ ˆ๋ฒจ2 ๋ฏธ์…˜์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ Dao์™€ Repository์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ ๋งŽ์€ ์ด์•ผ๊ธฐ๊ฐ€ ์˜ค๊ณ  ๊ฐ€๋Š” ๊ฒƒ์„ ๋Š๊ผˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง Dao๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— Repository์— ๋Œ€ํ•ด์„œ ๊นŠ๊ฒŒ ์ƒ๊ฐํ•ด๋ณด์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋ฒˆ ์ง€ํ•˜์ฒ  ๋ฏธ์…˜์—์„œ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ณต์žกํ•ด์ง€๋ฉด์„œ ์—ฌ๋Ÿฌ Dao๋“ค์ด ์ƒ๊ฒผ๊ณ , Repository๋ฅผ ์จ์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์™”๋‹ค. ํŽ˜์–ด๊ฐ€ ์ œ์•ˆํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธด ํ–ˆ์ง€๋งŒ, Repository์˜ ํ•„์š”์„ฑ์„ ์กฐ๊ธˆ ๋Š๋‚€ ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๊ทธ๋ž˜์„œ Dao์™€ Repository์— ๋Œ€ํ•ด์„œ ์ œ๋Œ€๋กœ ์•Œ์•„๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค! DAO๋ž€? Data Access Object์˜ ์•ฝ์ž๋กœ, ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜์˜ Application ๊ณ„์ธต์—์„œ ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, Dao(Persistence ๊ณ„์ธต)๋ฅผ..

์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค/ํšŒ๊ณ 

ํ…Œ์ฝ”ํ†ก ํšŒ๊ณ ํ•˜๊ธฐ(๋ผ๊ณ  ํ•˜๊ณ  ์ผ๊ธฐ์“ฐ๊ธฐ) ๐Ÿซ 

ํ…Œ์ฝ”ํ†ก ๋ฐœํ‘œ๋ฅผ ๋ฌด์‚ฌํžˆ ๋๋ƒˆ๋‹ค..! ๋ฐœํ‘œ์ฃผ์ œ๋Š” 'Servlet & Spring MVC' ์ด๋‹ค. ํ•˜ํ•„ ๋ฐœํ‘œ ๋‚ ์งœ๊ฐ€ ๋ฏธ์…˜ ์‹œ์ž‘ํ•˜๋Š” ์ฃผ์—ฌ์„œ, ์‚ฌ์‹ค์ƒ ๊ทธ ์ฃผ๋Š” ์ค€๋น„ํ•  ์ˆ˜ ์—†๊ฒ ๋‹ค ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ค€๋น„๋Š” ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์‹œ์ž‘ํ•˜๋Š”๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ํ•œ ๋‹ฌ ์ „์ฏค๋ถ€ํ„ฐ ํ‹ˆํ‹ˆ์ด ๊ณต๋ถ€๋ฅผ ํ–ˆ๋‹ค. ๋ฐœํ‘œ์ฃผ์ œ๋Š” ์›๋ž˜ ๋‹ค๋ฅธ ์ฃผ์ œ๋ฅผ ์„ ํƒํ–ˆ๋‹ค๊ฐ€, ์„ ์ฐฉ์ˆœ์— ๋ฐ€๋ ค์„œ ์ƒˆ๋กœ ์„ ํƒํ–ˆ๋‹ค. ์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชฐ๋ž์ง€๋งŒ, ์™ ์ง€ ์žฌ๋ฐŒ์„ ๊ฒƒ ๊ฐ™์•„์„œ ์„ ํƒํ–ˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ ˆ๋ฒจ 2์—์„œ ์Šคํ”„๋ง MVC์— ๋Œ€ํ•œ ํ•™์Šต์„ ์ง„ํ–‰ํ•ด ๋ณด๋‹ˆ, ์ •๋ง ์ข‹์€ ์ฃผ์ œ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ์Šคํ”„๋ง MVC์˜ ํ•ต์‹ฌ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” DispatcherServlet์— ๋Œ€ํ•ด ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•ด ๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ์ •๋ง ์ข‹์•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋„ˆ๋ฌด ๋ฐฉ๋Œ€ํ•ด์„œ ์ •๋ง ์ž์„ธํ•œ ๋™์ž‘ ๋ฐฉ์‹๊นŒ์ง€๋Š” ํ•™์Šตํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์› ๋‹ค. ๊ฐ๊ฐ์˜ ๊ตฌํ˜„์ฒด๋“ค..

milllllllie
๐Ÿ“š