[Spring] JPA Cascade์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด์ž ๐Ÿ’ญ
ยท
๊ณต๋ถ€ํ•˜๊ธฐ/Spring
JPA Cascade๋ž€?๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ํŠน์ • ์˜์†์„ฑ ์ž‘์—…(persist, merge, remove, refresh, detach)์„ ์—ฐ๊ด€๋œ ์ž์‹ ์—”ํ‹ฐํ‹ฐ์—๋„ ์ „ํŒŒํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด Order - OrderItem์˜ ๊ด€๊ณ„, Post - Comment์˜ ๊ด€๊ณ„๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.Order๊ฐ€ ์‚ญ์ œ๋œ๋‹ค๋ฉด ํ•ด๋‹น OrderItem ๋ฐ์ดํ„ฐ๋Š” ๋‚จ์•„์žˆ์„ ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์‚ญ์ œ๋˜์–ด์•ผ ํ•œ๋‹ค.Post - Comment ์—ญ์‹œ ๋™์ผํ•˜๋‹ค.@Entitypublic class Order { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "order") private List orderItems = new ArrayList(); public vo..
[Spring] ํšŒ์›ํƒˆํ‡ด, Soft Delete๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ (JPA)
ยท
๋งŒ๋“ค์–ด๋ณด๊ธฐ/Spring
ํšŒ์›ํƒˆํ‡ด๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ ...์ผ์ • ๊ด€๋ฆฌ Develop ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ Delete User, ์ฆ‰ ํšŒ์›ํƒˆํ‡ด๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์™”๋‹ค.ํ˜„์žฌ User๋Š” Todo์™€ Comment์˜ FK๋กœ์จ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค. (๊ทธ๋ ‡์ง€๋งŒ Comment๋Š” ์•„์ง ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜๋‹ค.)๋ฐ์ดํ„ฐ์˜ ์‚ญ์ œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.Hard Delete๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ User ํ…Œ์ด๋ธ”์—์„œ ์‹ค์ œ๋กœ ํ•ด๋‹น ์œ ์ €์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด ๊ฒฝ์šฐ ์™ธ๋ž˜ ํ‚ค ๊ด€๊ณ„๋ฅผ ์ฃผ์˜ํ•ด์„œ ๋‹ค๋ฃจ์–ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด User ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด Todo ํ…Œ์ด๋ธ”์— ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์•„์žˆ๋‹ค๋ฉด DB์—์„œ ๋ฌด๊ฒฐ์„ฑ ์˜ค๋ฅ˜๋ฅผ ๋˜์ง„๋‹ค. ์ด๋Ÿฐ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” FK๋กœ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์‚ญ์ œํ•ด์ฃผ๊ฑฐ๋‚˜, ํ˜น์€ ``ON DELETE CASCA..