๊ด๊ณํ DB์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉํ๋ @OnDelete์ cascade = CascadeType.REMOVE์ ์ฐจ์ด๋ฅผ ์์๋ณด์!
@OnDelete
- DDMS ๋ ๋ฒจ์์ ์๋
- @OnDelete(action = OnDeleteAction.CASCADE)
- DDL ์์ฑ์ cascade ์ ์ฝ ์กฐ๊ฑด์ด ์์ฑ ๋จ.
์ฌ๊ธฐ์ DDL์ด๋ Data Definition Language๋ก ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ ์ํ๋ ์ธ์ด์ด๋ฉฐ, CREATE, ALTER, DROP, TRUNCATE๋ฅผ ๋งํ๋ค.
casecade=CascadeType.REMOVE
- JPA ๋ ๋ฒจ์์ ์๋
- JPA๊ฐ ๋ถ๋ชจ ์ํฐํฐ๋ฅผ ์ญ์ ํ ๋ ์ฐ๊ด๋ ์์ ๋ฐ์ดํฐ์ ๋ํ DELETE ์ฟผ๋ฆฌ๋ฅผ ์คํ ํจ
๋ณธ์ธ์ ๊ฒฝ์ฐ ๋ถ๋ชจ์ ์์์ 1:N ๊ด๊ณ์ผ ๋ ์๋ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑ์์ผ์ผ ํ๋ค.
์๊ตฌ์ฌํญ 1 : ๋ถ๋ชจ ์ํฐํฐ๋ฅผ ์ญ์ ํ ๊ฒฝ์ฐ ์์ ์ํฐํฐ๋ ๋ชจ๋ ์ญ์ ๋์ด์ผ ํ๋ค.
์๊ตฌ์ฌํญ 2 : ์์ ์ํฐํฐ๋ฅผ ์ญ์ ํด๋ ๋ถ๋ชจ ์ํฐํฐ๋ ์ญ์ ๋๋ฉด ์๋๋ค.
์ค๋ฅ: "๋ถ๋ชจ" ํ
์ด๋ธ์ ์๋ฃ ๊ฐฑ์ , ์ญ์ ์์
์ด "fk7tttuo3u7xbkpq73oyc128uhl" ์ฐธ์กฐํค(foreign key) ์ ์ฝ ์กฐ๊ฑด - "์์" ํ
์ด๋ธ - ์ ์๋ฐํ์ต๋๋ค
Detail: (req_id)=(904a90be-8055-413e-b1f8-871e59287dbf) ํค๊ฐ "์์" ํ
์ด๋ธ์์ ์ฌ์ ํ ์ฐธ์กฐ๋ฉ๋๋ค.
์ค๋ฅ: "๋ถ๋ชจ" ํ
์ด๋ธ์ ์๋ฃ ๊ฐฑ์ , ์ญ์ ์์
์ด "fk7tttuo3u7xbkpq73oyc128uhl" ์ฐธ์กฐํค(foreign key) ์ ์ฝ ์กฐ๊ฑด - "์์" ํ
์ด๋ธ - ์ ์๋ฐํ์ต๋๋ค
Detail: (req_id)=(34accdf4-3fbe-4b5e-8d97-85ff9e6b9bc0) ํค๊ฐ "์์" ํ
์ด๋ธ์์ ์ฌ์ ํ ์ฐธ์กฐ๋ฉ๋๋ค.
2. ๋๋ค ์ค์ ํ ๊ฒฝ์ฐ
์์ ๊ฐ์ ์๋ฌ๋ ๋ฐ์ํ์ง ์์ง๋ง ์์ ์ํฐํฐ ํ๋๋ง ์ญ์ ํด๋ ๋ถ๋ชจ์ ๊ด๋ จ์๋ ๋ชจ๋ ์์ ์ํฐํฐ๊น์ง ์ญ์ ๋๋ค.
๊ฒฐ๋ก : @OnDelete(action= OnDeleteAction.CASCADE)๋ง ์ค์ ํ์ฌ ์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑ์์ผฐ๋ค!
@ManyToOne(fetch = FetchType.LAZY)
@OnDelete(action= OnDeleteAction.CASCADE)
@JoinColumn(name = "REQ_ID", referencedColumnName = "REQ_ID", columnDefinition ="VARCHAR(36)")
private Parent parent;
๋๊ธ