๐ Java & Spring & Kotlin20 [ 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. Java ๊ธฐ๋ณธํธ ๊ฐ์_๋คํ์ฑ1 ๋คํ์ฑ 1 ๋คํ์ฑ ์์๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ํ์ ์ธ ํน์ง์ผ๋ก๋ ์บก์ํ, ์์, ๋คํ์ฑ์ด ์๋ค. ๊ทธ์ค์์ ๋คํ์ฑ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ฝ์ด๋ผ ๋ถ๋ฆฐ๋ค.์์ ํ์ตํ๋ ์บก์ํ๋ ์์์ ์ง๊ด์ ์ผ๋ก ์ดํดํ๊ธฐ ์ฝ๋ค. ๋ฐ๋ฉด์ ๋คํ์ฑ์ ์ ๋๋ก ์ดํดํ๊ธฐ๋ ์ด๋ ต๊ณ , ์ ํ์ฉํ๊ธฐ๋ ๋ ์ด๋ ต๋ค. ํ์ง๋ง ์ข์ ๊ฐ๋ฐ์๊ฐ ๋๊ธฐ ์ํด์๋ ๋คํ์ฑ์ ๋ํ ์ดํด๊ฐ ํ์๋ค.๋คํ์ฑ(Polymorphism)์ ์ด๋ฆ ๊ทธ๋๋ก "๋ค์ํ ํํ", "์ฌ๋ฌ ํํ"๋ฅผ ๋ปํ๋ค.ํ๋ก๊ทธ๋๋ฐ์์ ๋คํ์ฑ์ ํ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ํ์ ์ ๊ฐ์ฒด๋ก ์ทจ๊ธ๋ ์ ์๋ ๋ฅ๋ ฅ์ ๋ปํ๋ค. ๋ณดํต ํ๋์ ํ์ ์ผ๋ก ๊ณ ์ ๋์ด ์๋ค. ๊ทธ๋ฐ๋ฐ ๋คํ์ฑ์ ์ฌ์ฉํ๋ฉด ํ๋์ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ํ์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ค๋ ๋ป์ด๋ค. ๋คํ์ฑ์ ์ดํดํ๊ธฐ ์ํด์๋ 2๊ฐ์ง ํต์ฌ ์ด๋ก ์ ์์์ผ ํ๋ค.๋คํ์ ์ฐธ์กฐ๋ฉ์๋ .. 2024. 12. 2. Java ๊ธฐ๋ณธํธ ๊ฐ์_์์ ์์ ์์ - ์์package extends1.ex1;public class ElectricCar { public void move() { System.out.println("์ฐจ๋ฅผ ์ด๋ํฉ๋๋ค."); } public void charge() { System.out.println("์ถฉ์ ํฉ๋๋ค."); }}package extends1.ex1;public class GasCar { public void move() { System.out.println("์ฐจ๋ฅผ ์ด๋ํฉ๋๋ค."); } public void fillUp() { System.out.println("๊ธฐ๋ฆ์ ์ฃผ์ ํฉ๋๋ค."); }}package extends1.ex.. 2024. 12. 1. Java ๊ธฐ๋ณธํธ ๊ฐ์_final final final ๋ณ์์ ์์final ํค์๋๋ ์ด๋ฆ ๊ทธ๋๋ก ๋! ์ด๋ผ๋ ๋ป์ด๋ค.๋ณ์์ final ํค์๋๊ฐ ๋ถ์ผ๋ฉด ๋๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.์ฐธ๊ณ ๋ก final์ class, method๋ฅผ ํฌํจํ ์ฌ๋ฌ ๊ณณ์ ๋ถ์ ์ ์๋ค.final - ์ง์ญ ๋ณ์package final1;public class FinalLocalMain { public static void main(String[] args) { // final ์ง์ญ ๋ณ์ final int data1; data1 = 10; // ์ต์ด ํ๋ฒ๋ง ํ ๋น ๊ฐ๋ฅ //data1 = 20; // ์ปดํ์ผ ์ค๋ฅ ๋ฐ์ // final ์ง์ญ ๋ณ์ 2 final int data2 = 10; .. 2024. 11. 28. ์ด์ 1 2 3 4 ๋ค์