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

๐Ÿ“– Java & Spring & Kotlin/๐ŸŒฑ Spring3

[ Spring ] CascadeType.REMOVE์™€ orphanRemoval=true, ์ž˜๋ชป ์“ฐ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ ์•„๊ฐ‘๋‹ˆ๋‹ค!! ๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ๊ฐ•์˜๋ฅผ ๋“ฃ๋‹ค๊ฐ€ Cascade์™€ orphanRemoval์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ๋‚˜์™”๋‹ค. ์ฒ˜์Œ์—๋Š” "์•„~ ์ด๋Ÿฐ ๊ฑฐ๊ตฌ๋‚˜" ํ•˜๊ณ  ๋ฌด์‹ฌ์ฝ” ๋„˜์–ด๊ฐ€๋ ค ํ–ˆ์ง€๋งŒ, ๊ฐ•์˜๊ฐ€ ์ง„ํ–‰๋ ์ˆ˜๋ก ๋จธ๋ฆฟ์†์— ๋ฌผ์Œํ‘œ๊ฐ€ ๊ฐ€๋“ ์ฐจ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค."Cascade๊ฐ€ ๋ญ์ง€? ์ด๊ฑธ ์–ธ์ œ ์จ์•ผ ํ•˜์ง€?", "orphanRemoval์€ ๋˜ ๋ญ”๋ฐ...?๋ผ๋Š” ์ƒ๊ฐ์ด ๊ผฌ๋ฆฌ์— ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ์—ˆ๋‹ค.๊ฒฐ๊ตญ, ๊ฐ•์˜๋ฅผ ๋“ฃ๋Š” ๋‚ด๋‚ด ์ •ํ™•ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ ์ฑ„๋กœ ๋ฉํ•˜๋‹ˆ ์ง€๋‚˜๊ฐ€๊ณ  ๋ง์•˜๋‹ค."์ด๋Œ€๋กœ ๋„˜์–ด๊ฐ€๋ฉด ๋‚˜์ค‘์— ๋˜ ๋ง‰ํž ๊ฑฐ์•ผ"๋ผ๋Š” ์ƒ๊ฐ์ด ๋จธ๋ฆฌ๋ฅผ ์Šค์ณค๊ณ , ์ด๋ ‡๊ฒŒ ๋œ ๊น€์— ๊ฐœ๋…์„ ์ œ๋Œ€๋กœ ์ •๋ฆฌํ•ด๋ณด์ž๋Š” ๋งˆ์Œ์œผ๋กœ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.Cascade์™€ orphanRemoval์€ JPA์—์„œ ๊ฝค ์ค‘์š”ํ•œ ๊ฐœ๋…์ด์ง€๋งŒ, ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด์„œ ๋Š๋‚€ ๊ฑด "๋ง์€ ์‰ฌ์›Œ ๋ณด์ด๋Š”๋ฐ, ๋ง‰์ƒ ์ดํ•ดํ•˜๋ ค๋ฉด ์ƒ๊ฐ๋ณด๋‹ค ๋ณต์žก.. 2025. 1. 17.
[ Spring ] AOP๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ๋†’์—ฌ๋ณด์ž! ๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋™์•ˆ, ํŒ€์›์ด AOP(Aspect-Oriented Programming)๋ฅผ ํ™œ์šฉํ•ด ๊ถŒํ•œ ๊ฒ€์‚ฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ชจ์Šต์„ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” AOP๋ฅผ ์ด์šฉํ•ด ๋ณต์žกํ•œ ๋กœ์ง์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ์Šต์ด ๋†€๋ผ์› ๊ณ , ๋™์‹œ์— ๋‚ด๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ธฐ์—” ์–ด๋ ต๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŒ€์›์˜ ์ฝ”๋“œ๋ฅผ ํ•จ๊ป˜ ๋ถ„์„ํ•˜๋ฉฐ ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋Š” ๊ณผ์ •์—์„œ, "๋‚˜๋„ ๋…ธ๋ ฅํ•˜๋ฉด ์ถฉ๋ถ„ํžˆ AOP๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค"๋Š” ์ž์‹ ๊ฐ์ด ์ƒ๊ฒผ๋‹ค.์ดํ›„, AOP์˜ ๊ฐœ๋…๊ณผ ํ™œ์šฉ ์‚ฌ๋ก€๋ฅผ ๋” ๊นŠ์ด ์ดํ•ดํ•˜๊ณ  ์‹ถ๋‹ค๋Š” ์—ด์ •์ด ์ƒ๊ฒผ๊ณ , ๊ด€๋ จ ์ž๋ฃŒ๋ฅผ ์ฐพ์•„๋ณด๋ฉฐ ํ•™์Šต์„ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ด๋ฒˆ ๊ฒฝํ—˜์€ ๋‹จ์ˆœํžˆ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์„ ๋„˜์–ด, ๋‚ด๊ฐ€ ๊ธฐ์ˆ ์ ์œผ๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ํ™•์ธํ•œ ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๋‹ค.์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ๋ฐ”๋กœ ๊ฐ€๋…์„ฑ.. 2025. 1. 15.
[ Spring ] ํŠธ๋žœ์žญ์…˜.. ๋‹ค๊ฐ€๊ฐˆ์ˆ˜๋ก ๋ฉ€๊ฒŒ ๋Š๊ปด์ง€๋Š” ์นœ๊ตฌ ํŠธ๋žœ์žญ์…˜์ด๋ž€ ๊ณผ์—ฐ ๋ฌด์—‡์ผ๊นŒ??ํ•˜๋‚˜์˜ ์ž‘์—… ๋‹จ์œ„๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ฌถ์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•ด์ค€๋‹ค!์ด๋ฅผ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ACID ์†์„ฑ์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค! (๋ฉด์ ‘์—์„œ ๋‚˜์˜ค๋Š” ํ•„์ˆ˜ ์งˆ๋ฌธ์ด๋‹ค!!)์›์ž์„ฑ (Atomicity)์ž‘์—…์ด ๋ชจ๋‘ ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜, ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•˜๋ฉด ์ „์ฒด๋ฅผ ๋กค๋ฐฑํ•œ๋‹ค.ex) ์†ก๊ธˆ ์‹œ, ๋ˆ์ด A ๊ณ„์ขŒ์—์„œ ๋น ์กŒ์ง€๋งŒ B ๊ณ„์ขŒ๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š์œผ๋ฉด ๋กค๋ฐฑํ•œ๋‹ค.์ผ๊ด€์„ฑ (Consistency)์ž‘์—… ์ „ํ›„์˜ ๋ฐ์ดํ„ฐ ์ƒํƒœ๊ฐ€ ํ•ญ์ƒ ์œ ํšจํ•˜๋„๋ก ๋ณด์žฅํ•œ๋‹ค.๊ฒฉ๋ฆฌ์„ฑ (Isolation)ํŠธ๋žœ์žญ์…˜ ๊ฐ„ ์„œ๋กœ ๊ฐ„์„ญํ•˜์ง€ ์•Š๋„๋ก ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.์˜ต์…˜์— ๋”ฐ๋ผ์„œ ์„ค์ •์„ ์ด๋ฆฌ์ €๋ฆฌ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.์ง€์†์„ฑ (Durability)ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณตํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ˜์˜๋œ๋‹ค.โ–ถ MySQL์„ ๋งŒ๋“ค ๋•Œ ์ด ์›์น™์„ ๋ชจ๋‘ ๊ณ ์ˆ˜ํ•ด์„œ ๋งŒ๋“ค์–ด ๋†จ๋‹ค. ์•ž์œผ.. 2025. 1. 5.