์ ์ฒด ๊ธ166 [Spring] ์๋ฐ ํด๋์ค์ ์คํ๋ง ๋น ํด๋์ค์ ์ฐจ์ด๋ฅผ ์ฝ๋๋ก ์ฝ๊ฒ ์์๋ณด์! ์คํ๋ง์ ์ ์ฌ์ฉํ๋๊ฐ?์๋ฐ ํด๋์ค๋ ์คํ๋ง ํด๋์ค๋๊ฑฐ์ ๋น์ทํ์ง ์์๊น? ๋ผ๊ณ ์๊ฐํ๋ค๋ฉด ์ด๋ฒ ํฌ์คํ ์ผ๋ก์ด๋ป๊ฒ ๋ค๋ฅธ์ง ์์๋ณด์! 1. ์๋ฐ ํด๋์ค์๋ฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ์ด๋ค.ํด๋์ค ๋ด๋ถ์๋ ์ํ๋ฅผ ๋ํ๋ด๋ ๋ณ์์ ํ๋์ ๋ํ๋ด๋ ๋ฉ์๋๊ฐ ์ ์๋์ด์๋ค.๊ฐ๋ฐ์๋ ํ์ํ ๋ new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํด์ ์ฌ์ฉํ๋ค.์์ ์ฝ๋_ ์นดํ ์ฌ์ฅ๋์ด ์ปคํผ๋ฅผ ๋ง๋ค๋๋ง๋ค ๋งค๋ฒ ๋จธ์ ์ ๊ตฌ์ ํด์ ๋ง๋ค์ด์ค์.// 1. ์คํ ํด๋์ค// ํ๋ก๊ทธ๋จ์ด ์์๋๋ฉด ๊ฐ์ฅ ๋จผ์ Main ํด๋์ค์ main ๋ฉ์๋๋ฅผ ์ฐพ๋๋ค.public class Main { public static void main(String[] args) { // 2. ์ผ๋จ ์นดํ๋ฅผ ์ง์ ์ฐจ๋ ค์ผ(new) ํ๋ค. .. 2026. 6. 11. GITHUB ๊พธ๋ฏธ๊ธฐ - 1) ๋จผ์ README๋ฅผ ๋ง๋ค์ด๋ณด์ ๊ฐ๋ฐ์ค๋น์์ ๊นํ๋ธ๋ฅผ ๊ฐ๊ณ ์์ ๊ฒ์ด๋ค.์ด๋ ฅ์์ ํจ๊ป ์ ์ถํ๊ธฐ ์ , ๋ด ๊นํ๋ธ๋ฅผ ์์๊ฒ ๋จ์ฅํด๋ณด์. 1. Readme ๋ง๋ค๊ธฐRepository์ ๋ค์ด๊ฐ๋ค. NEW๋ฅผ ๋๋ฌ์ respository๋ฅผ ์์ฑํ๋ค repository name์ ์์ด๋๋ฅผ ์ ๋๋ค- Add README๊ฐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก off๊ฐ ๋์ด์์ํ ๋ฐ, ์ด๊ฑธ ๊ผญ on์ผ๋ก ๋ฐ๊ฟ์ค์ผํ๋ค. - Choose visibility ๊ธฐ๋ณธ๊ฐ์ด Public์ด๋, ๊ทธ๋ฅ ๊ฐ๋งํ ๋๋๋ฉด ๋๋ค. ๋ง์ฝ public์ด ์๋๋ฉด public์ผ๋ก ๋ฐ๊พธ์.- ์ง๊ธ ์คํฌ๋ฆฐ์ท์์ ๋นจ๊ฐ ๊ฒฝ๊ณ ๋ฌธ๊ตฌ๊ฐ ์๋ ๋จ๋ ์ด์ ๋ ์ด๋ฏธ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ ๋์ค๋๊ฑฐ๋ผ ๋ฌด์ํด๋ ๋๋ค. ๋ ํฌ์งํ ๋ฆฌ์ ๋ค์ด๊ฐ์ ๋ด ์์ด๋ ๋ ํฌ์งํ ๋ฆฌ ๋ค์ด๊ฐ๋ค ์ฐํ ๋ชจ์์ ๋ค์ด๊ฐ์ ์์ ํ๋ค ์ฌ๊ธฐ์ ์์ ํ.. 2026. 6. 11. ํฐ์คํ ๋ฆฌ ๊ด๋ฆฌ 1ํธ_ ์์ต์ฐฝ์ถ์ ์ํด ๊ตฌ๊ธ ์์น ์ฝ์ ์ฝ๊ฒ ๋ฑ๋กํ๊ธฐ. ์ฌ๋ฌ๋ถ์ ํฐ์คํ ๋ฆฌ๋ฅผ๊ตฌ๊ธ ๊ฒ์์ ๋ ธ์ถ์ํค๋ ค๋ฉด๊ตฌ๊ธ ์์น ์ฝ์์ ๋ฑ๋กํด์ผํ๋ค.์์ต ์ฐฝ์ถ์ ์ํ๋ค๋ฉด ๊ผญ! ํด๋ณด์. 1. ํฐ์คํ ๋ฆฌ ์ค์ ์์ ๊ตฌ๊ธ ์์น์ฝ์ ๋ฑ๋กํ๊ธฐ!๊ด๋ฆฌ์ ๋ค์ด๊ฐ๋ค ํ๋ฌ๊ทธ์ธ์ ๋๋ฅธ๋ค ๊ตฌ๊ธ ๊ณ์ ์ฐ๊ฒฐํ๊ธฐ ๋๋ฅธ๋ค ๊ตฌ๊ธ ๊ณ์ ๋ก๊ทธ์ธ ํ ๋์ ํญ๋ชฉ ์ ๋ถ ๋์ํ๋คํฐ์คํ ๋ฆฌ ๊ด๋ฆฌ ํ๋ฉด์ผ๋ก ๋ค์ ๋์ด์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌ๋ ๊ฒ์ ํ์ธ ํ ์ ์ฉ์ ํด๋ฆญํ๋ค. 2. ๊ตฌ๊ธ ์์น ์ฝ์์ ๋ค์ด๊ฐ์ ์ค์ ํ๊ธฐ! ์๋ ๋งํฌ๋ฅผ ๋๋ฌ์ ๋ค์ด๊ฐ๋คhttps://search.google.com/search-console Google Search ConsoleSearch Console ๋๊ตฌ์ ๋ณด๊ณ ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ดํธ์ ๊ฒ์ ํธ๋ํฝ ๋ฐ ์ค์ ์ ์ธก์ ํ๊ณ , ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉฐ, Google ๊ฒ์๊ฒฐ๊ณผ์์ ์ฌ์ดํธ๊ฐ ๋๋ณด์ด๊ฒ ํ .. 2026. 6. 11. [Spring][JPA] OrphanRemoval=true์ ๋ํด์ ์ฝ๊ฒ ์์๋ณด์! ๋ณดํต ๋ถ๋ชจ ์ํฐํฐ์ ์์ ์ํฐํฐ๊ฐ ์๋ ๊ฒฝ์ฐOrphanRemoval๋ฅผ ์์ฑํ๋ค.๋๋์ฒด OrphanRemoval๊ฐ ๋ญ๊น? 1. ๊ณ ์ ๊ฐ์ฒด๋?๋ถ๋ชจ ๊ฐ์ฒด์ ์ฐ๊ฒฐ์ด ๋์ด์ง ์์ ๊ฐ์ฒด๋ฅผ JPA์์ ๊ณ ์๊ฐ์ฒด๋ผ๊ณ ํ๋ค.์๋์ฒ๋ผ ์ฃผ๋ฌธ์ด ๋ค์ด์๋ค.Order โโ OrderItem โโ OrderItem โโ OrderItem๊ทธ๋ฐ๋ฐ ์ด๋ ์๊ฐ ์ฃผ๋ฌธ์์ ์ํ ํ๋๋ฅผ ์ ๊ฑฐํ๋ค.order.getOrderItems().remove(item); // ์ ๊ฑฐitem.setOrder(null);๊ทธ๋ฌ๋ฉด ์ด OrderItem์ ๋ ์ด์ ์ด๋ค Order์๋ ์ํ์ง ์๊ฒ ๋๋ค.Order โโ OrderItem โโ OrderItemOrderItem ← ๋ถ๋ชจ๋ฅผ ์์๋ฐ 2. OrphanRemoval = trueOrphanRemova.. 2026. 6. 10. [Spring][JPA] ์ํฐํฐ๋งค๋์ (EntityManager)์ ์์์ฑ ์ปจํ ์คํธ๊ฐ ๋ฌด์์ธ์ง ์ฝ๊ฒ ์ดํดํด๋ณด์! ์ ํฌ์คํ ์์ Cascade์ ๋ํด ์ค๋ช ํ๋ค.์ฌ์ค Cascade๋ฅผ ๋ ์ ์ดํดํ๊ธฐ ์ํด์์ํฐํฐ๋งค๋์ ๊ฐ ๋ฌด์์ธ์ง ์๊ณ ์์ผ๋ฉด ์ข๋ค.๊ทธ๋์ ์ด๋ฒ์ ์ํฐํฐ ๋งค๋์ ๋ฅผ ์์๋ณด๋๋ก ํ๊ฒ ๋ค. 1. ์ํฐํฐ ๋งค๋์ (Entity Manager)์๋ฐ ์ฝ๋ฉ์ ํ ๋ ๋ค๋ฃจ๋ ๊ฑด ๊ฐ์ฒด(Object) ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณณ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค(DB) ํ ์ด๋ธ์ด๋ค.๋์ ์ ํ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ํ๊ฐ ์ ์ํตํ๋ค.๊ทธ๋์ ์ค๊ฐ์์ ์๋ฐ ๊ฐ์ฒด๋ฅผ ๋๊ฒจ์ฃผ๊ณ , ์์์ DB์ ๋ง๋ SQL๋ก ๋ฐ๊ฟ์ ์ ์ฅํ๊ณ ๊ฐ์ ธ์ค๋ ์ผ์ ํด์ค ์ ๊ฐ ํ์ํ๋ค.๊ทธ ์ผ์ ํด๋ด๋ ์ ๊ฐ ๋ฐ๋ก ์ํฐํฐ ๋งค๋์ ์ด๋ค.์ํฐํฐ ๋งค๋์ ๋ ๋ด๋ถ์ ์์์ฑ ์ปจํ ์คํธ๋ผ๋ ์ผ์ข ์ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋๊ณ ๋ฌผ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ค. → ์ฝ๊ฒ ์ค๋ช ํ๋ฉด, ๋งค๋์ ๋ ๋น๋ฐ ๋ฌผ๋ฅ์ฐฝ๊ณ (์์์ฑ .. 2026. 6. 9. [Spring][JPA] Cascade์ ์๋ฏธ์ ์ข ๋ฅ ์์๋ณด๊ธฐ. ๋ค๋๋ค ๋งคํ ์ํฐํฐ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋ฉด์Cascade ํ์ ์ ์ค์ ํ๋ค.Cascade๊ฐ ๋ฌด์์ด๋ฉฐ ์ด๋ค ์ข ๋ฅ๊ฐ ์๋์ง ์ดํด๋ณด์. 1. Cascade์์์ฑ์ ์์ฑ๋ ๋ฐ์ดํฐ๋ ๊ฐ์ฒด๊ฐ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ๊ฑฐ๋ ์์คํ ์ด ์ฌ๋ถํ ๋์ด๋ ์ฌ๋ผ์ง์ง ์๊ณ ์๊ตฌ์ ์ผ๋ก ์ง์๋๋ ํน์ฑ์ ๋งํ๋ค.Cascade๋ ์์์ฑ ์ ์ด๋ก ๋ถ๋ชจ ์ํฐํฐ๊ฐ ์ํํ ์์์ฑ ์์ ์ ์ฐ๊ด๋ ์์ ์ํฐํฐ์๊ฒ๋ ์๋์ผ๋ก ์ ๋ฌํ๋ ๊ธฐ๋ฅ์ด๋ค.์๋ฅผ ๋ค์ด ๋ถ๋ชจ ์ํฐํฐ๋ฅผ ์ ์ฅํ ๋ ์์ ์ํฐํฐ๋ ํจ๊ป ์ ์ฅํ๊ฑฐ๋ ๋ถ๋ชจ ์ํฐํฐ๋ฅผ ์ญ์ ํ ๋ ์์ ์ํฐํฐ๋ ํจ๊ป ์ญ์ ๋๋๋ก ๋ง๋ค ์ ์๋ค.JPA์์๋ ์ด๋ฌํ ์ฐ๊ด๋ ์ํฐํฐ๊ฐ์ ์์กด์ฑ์ ์ค์ ํ๊ธฐ ์ํด Enum ํ์ ์ jakarta.persistence.CascadeType์ ์ ๊ณตํ๊ณ ์๋ค. → JPA์์ CascadeType์ .. 2026. 6. 9. [Spring] ๋์์ฑ ๋ฌธ์ ๋ฅผ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ํด๊ฒฐํด๋ณด์!_ ๋ฆฌํฉํ ๋ง ๋ง๋ค์๋ ์ฝ๋๋ฅผ ๋ค์ ์ดํด๋ณด๋๋์์ฑ ๋ฌธ์ ๋ฅผ ์ ๋งคํ๊ฒ ํด๊ฒฐํ๊ณ ์์๋ค.์ข ๋ ํ์คํ๊ฒ ๋์์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋ณด์. 1. ์์ธ์ด๋ฐ ๋ก์งif (customerRepository.existsByCode(code)) { throw new DuplicateCodeException("์ด๋์ฝ๋๊ฐ ์ค๋ณต๋์์ต๋๋ค.");}customerRepository.save(customer);customerSearchRepository.save(toSearchEntity(customer));CustomerService ์ค save ๋ฉ์๋์ ์ผ๋ถ๋ถ์ด๋ค. ์ฒ์ ๊ณ ๊ฐ ๋ฑ๋ก ๋ก์ง์ ์ด๋ฐ ํ๋ฆ์ด์๋ค. code๊ฐ ๋ค์ด์ค๋ฉด existsByCode๋ก code๊ฐ ์กด์ฌํ๋์ง ๋ณด๊ณ , ์กด์ฌํ๋ฉด DuplicateCodeException์ ๋์ก๋ค.๋.. 2026. 6. 8. ์ด์ 1 2 3 4 ยทยทยท 24 ๋ค์