jindbe2591
@jindbe2591
Reviews Written
-
Average Rating
-
Posts
Q&A
OrderItem์ DB์์ ์ง์ฐ๊ณ ์ ํ ๋
์๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด์ ๋ถํฐ๋ ์ ๋ต์ด ์๋ ๊ณ ๋ฏผ์ ํ๊ฒ ๋๋๊ตฐ์. ์ค๊ณ๋ฅผ ์๊ฐํ ๋์ ๋จ์ํจ์ ๋จผ์ ์๊ฐํ๋ ๊ฒ์ ๊ผญ ๊ธฐ์ตํ๊ฒ ์ต๋๋ค. ๊ฐ๋ฐ๊ฒฝํ์ ํตํด ์๋ ค์ฃผ์ ๋ถ๋ถ ๋๋ถ์ ์ฌ๋ฌ ๊ฐ์ง ๊ฐ์ ์ก์ ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ง์ด ๋์์ฃผ์ ๋๋ถ์ ์ด๋ฌํ ๊ณ ๋ฏผ๋ ํ ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ ๋ง ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
- 2
- 22
- 3.4K
Q&A
OrderItem์ DB์์ ์ง์ฐ๊ณ ์ ํ ๋
๊ถ๊ธํ๋ ๋ถ๋ถ์ด ํด์๋์์ต๋๋ค~! @Transactional์ ๋ฒ์ด๋๋ฉด์ ๋ณ๊ฒฝ๊ฐ์ง๋ฅผ ํตํด id๊ฐ ์ฑ์์ ธ์ ๋๊ฐ๊ธฐ ๋๋ฌธ์, ๊ฐ์ฒด๋ฅผ returnํ ๋ค์ id๋ฅผ ์ฌ์ฉํ ์ ์๊ตฐ์. ์ ๋ง ๊ฐ์ฌํฉ๋๋ค. ์๋ง ์๋์ ๋๋ฆฌ๋ ์ง๋ฌธ์ด ์ด ๊ฒ๊ณผ ๊ด๋ จ๋ ๋ง์ง๋ง ์ง๋ฌธ์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค.! ์ ์์์์๋ ๊ฐ์ฒด๋ฅผ ์ฐพ์ ๋ ์ด๋ฏธ ๊ฐ์ฒด๋ฅผ ์๊ณ ์์ด์ ์ฐธ์กฐ ๋น๊ต๋ก ์ฐพ์ ์ ์๋๋ฐ, ์ธ๋ถ URI๋ฅผ ํตํด ๋ค์ด์ค๋ ์ ๋ณด๋ id ๋ฐ์ ์์ด์ ๋ฐ๋ก ๊ฐ์ฒด ์ฐธ์กฐ๊ฐ์ ๊ฐ์ง ์ ์์ด ์ด์ฐ๋๋ id๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์ฐพ์์ผ ํ๋๋ผ๊ตฌ์. ๋ณดํต์ repository๋ฅผ ํตํด findById๋ก ์ฐพ์ํ ๋ฐ, cascade์ orphanremoval๋ก ์์ ํ entity์๊ฒ ์ฑ ์์ ๋๊ธด ์ํฉ์ด๋ผ๋ฉด, entity์ ๋ฉค๋ฒํจ์๋ก id๋ฅผ ๋ฐ์ ๊ฐ์ฒด๋ฅผ ์ฐพ๋ ๊ฒ์ด ์ข์ ์ค๊ณ์ผ๊น์? ๋ค์ ์ ๋ฆฌ๋๋ฆฌ๋ฉด, ์ํฉ: URI๋ฅผ ํตํด ๋ค์ด์ค๋ ์ ๋ณด๋ง์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ฐพ์์ผํ๋ฏ๋ก id๊ฐ ๋ฐ์ ์ ์ ์๋ ๊ฒ์ด ์์. (์ค๋ฌด์์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๊ฑฐ๋, cascade์ orphanremoval์ ์จ์ ๋ฌถ์ entity๋ฅผ ์กฐํํ๋ ์ผ์ด ์์ผ๋ฉด ์๋ ๊ฒฝ์ฐ ์๋ ค์ฃผ์ธ์.) ํด๊ฒฐ: id๋ก ๊ฐ์ฒด๋ฅผ ์ฐพ๊ธฐ ์ํด entity class์ id๋ฅผ ๋ฐ์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ๋ฉค๋ฒํจ์๋ฅผ ๋ง๋ค์ (cascade์ orphanremoval๋ก ์ฑ ์์ entity์๊ฒ ๋๊ฒผ๊ธฐ ๋๋ฌธ) ์์ ๊ฐ์ ์ํฉ์ด ๋ง๋ ์ค๊ณ์ธ์ง๊ฐ ๊ถ๊ธํฉ๋๋ค. ์ค๋ฅ๊ฐ ๋๋ค๋ฉด "์ค๋ต"์ด๊ธฐ ๋๋ฌธ์ "์ ๋ต"์ผ๋ก ๊ณ ์น๋ฉด ๋์ง๋ง, ์ค๊ณ ๋ฐฉ์์ ์์ด์๋ ์ค๋ฌด๊ฒฝํ์ด ์๋ ์ ๊ฒ ๋ง๋ ์ค๊ณ ๋ฐฉ์์ธ์ง ์๋์ง ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค์.. ์ด์ ๋ํ ์กฐ์ธ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
- 2
- 22
- 3.4K
Q&A
OrderItem์ DB์์ ์ง์ฐ๊ณ ์ ํ ๋
๊ฐ์ฌํฉ๋๋ค. ๋ค๋ฅธ ๋ถ๋ถ ๋ชจ๋ ์ดํดํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, ๋ง์ง๋ง ์ง๋ฌธ์ ์ ๊ฐ ์กฐ๊ธ ์ฌ์ญค๋ณด๊ณ ์ถ์๋ ๊ฑฐ๋ ๋ค๋ฅด๋ค์ใ ใ ๋ง์์ฃผ์ ๋ด์ฉ์ ์๊ณ ์๋ ๋ถ๋ถ์ธ๋ฐ, ์ ๊ฐ ๊ถ๊ธํ๋ ๋ถ๋ถ์ ์ธ๋ถ์์ ์ด๋ป๊ฒ child ๊ฐ์ฒด๋ฅผ ์ฐพ๋์ง๊ฐ ์ง๋ฌธ์ด์์ต๋๋ค. ๋ณ๊ฒฝ๊ฐ์ง๋ฅผ ํตํ insert๋ ํด๋น ๋ฉ์๋์์ ๋ฐ๋ก id๋ฅผ ์ฝ์ ์ ์๊ธฐ ๋๋ฌธ์ (์์ง ๋ฉ์๋๊ฐ ์ ๋๋์ commit์ ์ด๋ฏ๋ก id==null) Service์์ child ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ๊ณ id๋ฅผ ๋ง์ง๋ง์ returnํ ์ ์๋ ์ํฉ์ ๋๋ค. (๋ง์น OrderService์์ order ๋ฉ์๋๋ฅผ ๋ง์น๊ณ id๋ฅผ returnํด์ฃผ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฉ์๋๋ฅผ ๋ง๋ค ์ ์๋ ์ํฉ) (์์์ ๋ง์๋๋ ธ๋ฏ์ด, child์์๋ id๋ฅผ ๋ฐ๊ธฐ ์ํด em.persist๋ฅผ ํธ์ถํ ๊ฒ์ธ๋ฐ, persist๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋๋ค๊ณ ํ๋ฉด ์๋์ผ๋ก id๋ null๋ก return๋์ด์..) ์๋๋ ์ ๋ถ ๊ฒ์๋ฌผ-์ฒจ๋ถํ์ผ ์์๋ก ๋ค๊ฒ ์ต๋๋ค. ๋ง์ฝ OrderService์ฒ๋ผ child๋ฅผ addํ ํด๋น child์ id๊ฐ์ return์ ํด์ฃผ๋ฉด, view์์ ๋ฟ๋ฆด ๋ id๋ฅผ ๋ด์ฃผ์ด์ DELETE /posts/1/files/2 ์ด๋ฐ์์ผ๋ก 1๋ฒ ๊ฒ์๋ฌผ์ 2๋ฒ ์ฒจ๋ถํ์ผ์ ์ง์ฐ๋ผ๋ ํ๋์ด ๊ฐ๋ฅํ๋ฐ ๋ฐํด, ๋ง์ฝ ์์ฒ๋ผ ๋ณ๊ฒฝ๊ฐ์ง์ ์์กดํ๋ฉด Service์์ id๊ฐ์ returnํด์ค ์ ์๊ณ , ๋ฟ๋ฆด ๋ ํด๋ดค์ index๋ก ๋ฟ๋ฆฌ๊ฒ ๋๋๋ฐ, ๋๊ฐ์ด DELETE /posts/1/files/2 ๋ฅผ ์์ฒญํ๊ฒ ๋๋ฉด, 2๋ฒ์ด ์ฌ๋ผ์ง๊ณ 3๋ฒ์ธ ์์๊ฐ 2๋ฒ์ด ๋๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ์๊ธธ ๊ฒ ๊ฐ์์์. (๊ฐ์ URI์ ๋ค๋ฅธ behavior๊ฐ ๋งคํ๋์ด์์) ์ด ๋ถ๋ถ์ ์ค๋ฌด์์๋ ์ค์ ๋ก Controller์์ ์ด๋ป๊ฒ ๋ฐ์์ ์์ฒญํ๋์ง ๊ถ๊ธํฉ๋๋ค. ์ ๊ฐ ์ดํดํ ๋ฐ๋ก๋, CASCADE๋ก ๋ฌถ์ด์ ์ํฐํฐ์๊ฒ ๊ด๋ฆฌ์ฃผ์ฒด๋ฅผ ๋๊ธฐ๋ฉด, ์ํฐํฐ์์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ repository์์ ์ ํด์ค๋ DB๋ก๋ถํฐ id ๊ฐ์ ๋ฐ๋ ์ผ์ด ์์ ๊ฒ ๊ฐ์, ์ด๋ด ๋์๋ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ๊ถ๊ธํฉ๋๋ค. ์ ์ง๋ฌธ์ด ์ ์ ๋ฌ๋์ง ์์ ์์ฌ์์ ์ด๋ ๊ฒ ์กฐ๊ธ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์ํฉ์ ์ ์ด๋ด ๋๋ค. ์ด๋ ๊ฒ ์ง๋ฌธ๋๋ฆฌ๋ ์ด์ ๋ ์ค๋ฌด์์ ์ด๋ฐ ์ํฉ์ผ ๋ ์ด๋ค ํจํด์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ๋์ง ๊ถ๊ธํ์ฌ ์ง๋ฌธ๋๋ฆฝ๋๋ค. ์ค๋ฌด์์ ์ด๋ฐ ์ํฉ์ด ๋ฐ์ํ์ง ์๊ณ ์ ์ด์ ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ์ค๊ณํ๋ค๋ฉด, ๊ทธ ๋ฐฉํฅ์ ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๋์์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
- 2
- 22
- 3.4K
Q&A
OrderItem์ DB์์ ์ง์ฐ๊ณ ์ ํ ๋
๋ฆ๊ฒ ๋ต๋ณ๋๋ ค ์ฃ์กํฉ๋๋ค. ํด๊ฒฐ ๋์์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค. em.persist() ํธ์ถ๋ก ์ธํด ์ ์ฅ๊ณผ ์ญ์ ์์๊ฐ ๊ผฌ์ฌ ๋ฐ์ํ๋ ๊ฒ์ด์๊ตฐ์. ์ ๋ง ์น์ ํ ๋ต๋ณ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ์ฃผ์ ์ฝ๋์์ ๊ถ๊ธํ ์ ์ด ์๋๋ฐ, (๋ค๋ฅธ ๊ฐ์์ง๋ง,) mappedBy๋ก ์ฐ๊ฒฐ๋ list๋ ๊ฐ์ ๋ "mappedBy ๋จ์ด ๊ทธ๋๋ก mapping์ด ๋์ด์์ ๋ฟ ์ฐ๊ด๊ด๊ณ์ ์ฃผ์ธ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ด ๋ณ์๋ฅผ ๋ณ๊ฒฝํ์ฌ๋ DB์ ๋ฐ์๋์ง ์๋๋ค."๋ผ๊ณ ๋ง์์ฃผ์ จ๋ ๊ฒ ๊ฐ์๋ฐ, ์ ํ ์คํธ์ฝ๋์์ mappedBy์ ๋ณ์๋ฅผ ๋ณ๊ฒฝํจ์ผ๋ก์จ ์ ๊ฑฐํ์ ๊ฒ ๊ฐ์์์.! ์ฌ๊ธฐ์๋ ์ด๋ป๊ฒ ๋ณ๊ฒฝ์ด ๋ ๊ฒ์ธ์ง, ์๋ ๋ณ๊ฒฝ์ ํด๋ ๋๋ ๋ณ์์ธ์ง ๊ถ๊ธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ , Parent.childList๋ ์ง์ ์ง๋ง Child.parent๋ ์ง์ฐ์ง ์์ผ์ จ๋๋ฐ, ์ด ๋ถ๋ถ์ (DB๋ฐ์ ๋ง๊ณ ๋ ์ค๋ฌด์์) ๋ฌธ์ ๊ฐ ์์๊น์? ๊ทธ๋ฆฌ๊ณ cascade๋ฅผ ์ฌ์ฉํ๋ฉด ๊ด๋ฆฌ์ ์ฃผ์ฒด๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์๋ ์ํฐํฐ๋ก ํด์ผํ๋ค๊ณ ๋ง์์ฃผ์ ๋ถ๋ถ ์ดํดํ์ต๋๋ค. repository์์๋ ์์ ํ ์ ๊ฒฝ๋๊ณ ๊ทธ ๋ถ๋ถ์ ์ํฐํฐ์๊ฒ ๋๊ฒจ์ผํ๊ตฐ์. ์ ์๋ ๋๋ถ์ ์ค๊ณ์ ๋ํด ๋ ํ ๋ฒ ๋ฐฐ์๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด parent์ ์ฐ๊ฒฐ๋ ํน์ child๋ฅผ ์ง์ฐ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํด์ผํ๋์? ์ ์์์ ์ ๊ฐ em.persist()๋ฅผ ํธ์ถํ๋ ์ด์ ๋ ์์ฑ๋ OrderItem์ id๋ฅผ ๋๊ฒจ์ฃผ๊ธฐ ์ํด์์๋๋ฐ, ๋ง์ฝ save์์ด ๋ณ๊ฒฝ๊ฐ์ง์ ์์กดํ์ฌ ์ํฐํฐ์์ ํด๊ฒฐํด์ผ ํ๋ค๋ฉด id ๋ถ์ฌ๊ฐ ๋์ง ์์ํ ๋ฐ, ์์ฑํ์์ ์๋ฆด ๋ id๋ฅผ ๋๊ฒจ์ค ์ ์๊ธฐ๋ ํ๊ณ ํน์ OrderItem ์ญ์ ๋ฅผ ์ํ ๋ ์ด๋ค OrderItem์ธ์ง ์ด๋ป๊ฒ ์ฐพ์ ์ ์๋์? ์์ ์ ์ด์ฃผ์ ๊ฒ์๋ฌผ-์ฒจ๋ถํ์ผ์ ์์๋ก ๋ค๋ฉด, ๊ฒ์๋ฌผ์ ์ฒจ๋ถํ์ผ 3๊ฐ๋ฅผ ์ ๋ก๋ํ ๋ค์ 2๋ฒ ์ฒจ๋ถํ์ผ์ ์ง์ฐ๊ธฐ ์ํ ์์ฒญ์ ๋ณด๋๋ค๊ณ ํ๋ฉด DELETE๋ฅผ id์ ํจ๊ป ๋ณด๋ด์ฃผ์ด์ผํ ๊ฒ ๊ฐ์์์.! ๋ด๋ถ ์ฝ๋์์๋ index๋ก ๊ด๋ฆฌํ ์ ์์ง๋ง, ์๋น์ค์์ OrderItem ์ญ์ ๋ฅผ ๋ณด๋ผ ๋์ ๊ทธ pk id๊ฐ ์์ด์ผํ๋ค๊ณ ์๊ฐ์ ํ์์ต๋๋ค. ์ง๋ฌธ์ด ๊ธธ์ด ์ง๋ฌธ ๋ถ๋ถ์ ํ์ด๋ผ์ดํธ ํ์์ต๋๋ค. ๋ต๋ณ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
- 2
- 22
- 3.4K
Q&A
OrderItem์ DB์์ ์ง์ฐ๊ณ ์ ํ ๋
์ํ, ์ฝ๋๋ฅผ ํ์ธํด์ผ ๋ฌธ์ ๋ฅผ ์ฐพ์ ์ ์๊ตฐ์. ๋ค๋ฅธ ์ฌ๋ ์ฝ๋ ์ฝ๋๊ฒ ๊ต์ฅํ ์๊ฐ ์๋ชจ์ ์ธ ๊ฒ์ ์๊ธฐ์, ์ ๊ฐ ๋ง์๋๋ฆฐ ์ํฉ์ด ๋ด๊ธด ํจ์๋ฅผ ๊ฐ์์์ ํ๋ก์ ํธ์ ์น์ด์ ์ต์ํ์ ์์ ์ผ๋ก ์ค๋ช ๊ณผ ํจ๊ป ์ ๋ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ฐ์ ์์๋ ๊ฐ๊ณ ๊ณ์คํ ๋ ๋ฐ๋ก ํฉ์น ์ ์๋๋ก diff ๋ฌ ๊ฒ๋ ๋ฐ๋ก ์ ๋ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๋์์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ฃผ๋ง ๋ด๋ก ๋ณด๋ด๋๋ฆฌ๊ฒ ์ต๋๋ค.
- 2
- 22
- 3.4K
Q&A
OrderItem์ DB์์ ์ง์ฐ๊ณ ์ ํ ๋
ํน์๋ ํด์ ์ฐ๊ด๊ด๊ณ ๋๋ ํจ์๋ ๋จ์ํ ์คํธ ํด๋ณด์๋๋ฐ, ์ ์ ์๋ ํฉ๋๋ค. ์ฒ์์ orphanRemoval์ด ์ ๋๋ ๊ฒ์ ๋ํ ์ง๋ฌธ์ด์์ง๋ง, ์์๋ณด๋ค๋ณด๋ ๋ค์ ์ง๋ฌธ์ผ๋ก ๋ฐ๋ ๊ฒ ๊ฐ์ต๋๋ค. persist ํ์ ์ฐ๊ด๊ด๊ณ ๋งบ์ด ์ถ๊ฐ๋ child์ ๋ํด์๋ orphanRemoval์ด ์๋ํ์ง ์๋๋ค.(Order - OrderItem ์์๋ก ๋ค๋ฉด, ๊ฐ์์์๋ OrderItem์ ๋ฏธ๋ฆฌ ๋ง๋ค๊ณ Order์ ์ถ๊ฐํ ํ ์์ํํ์์ง๋ง, ์์ํ ํ์ OrderItem์ ์ถ๊ฐํ ๊ฒฝ์ฐ orphanRemoval์ด ์๋ํ์ง ์์ต๋๋ค.) ์ด๋ ๊ฒ ์ ๋ฆฌ๊ฐ ๋๋ค์. ์์ ์์ฝ๋ณธ์ ๋ ์์ฝํ ํ์ค์์ฝ์ ๋๋ค. ์ ์ด๋ฐ์ง ์์ง ์ดํด๋ฅผ ๋ชป ํ ์ํฉ์ ๋๋ค..
- 2
- 22
- 3.4K
Q&A
OrderItem์ DB์์ ์ง์ฐ๊ณ ์ ํ ๋
CASCADE ๊ด๋ จ ์ง๋ฌธ์ด ๋ง์๋ ๋ณด๊ตฐ์ ใ ใ ๊ทธ๋ฐ๋ฐ ์ ๋งํฌ๋ ์ ์ง๋ฌธ๊ณผ ๋ง์ด ๋ค๋ฅธ ์ง๋ฌธ ๊ฐ์ต๋๋ค.ใ ใ ์ ์ํฉ์ด ์ ์ ๋ฌ์ด ๋์ง ์๋ ๊ฒ ๊ฐ์ ์งง๊ฒ ์์ฝ๋๋ฆฌ์๋ฉด.. ์ ์ํฉ์ ์ด๋ ์ต๋๋ค. 1. CascadeType.ALL๋ก ๋ฌถ์ฌ์์. 2. orphanRemoval = true 3. child์ ์ฐ๊ด๊ด๊ณ ๋งคํ ํ persist๋ฅผ ํตํด ์์ํํ parent์ ๊ฒฝ์ฐ, child์ ์ฐ๊ด๊ด๊ณ๋ฅผ ์ง์์ผ๋ก์จ delete query ์ ์ ๋ฐ์ // pseudo code persist(new Parent(child)) 4. child ์์ด parent ์ persist ํ์ ๋์ค์ child์ ์ฐ๊ด๊ด๊ณ๋ฅผ ๋งบ์ ํ ์ถ๊ฐ๋ก parent๋ฅผ persist๋ฅผ ํ ๊ฒฝ์ฐ์ (์ด๋ฏธ managed entity), child์ ์ฐ๊ด๊ด๊ณ๋ฅผ ์ง์๋ delete query ๋ฐ์ํ์ง ์์ (๋์ ์ฐ๊ด๊ด๊ณ๋ฅผ ์ง์์ fk=null๋ก ๋ฐ๊พธ๋ update ๋ฐ์) // pseudo code persist(new Parent()) persist(parent.addChild(child)) 5. ์ํฉ3, 4๋ฒ์์ ๋ชจ๋ child์์ ์ฐ๊ด๊ด๊ณ๋ฅผ ์ง์ ๊ธฐ ๋๋ฌธ์ em.remove(child)์ผ๋ก ์ญ์ ๊ฐ๋ฅ [์ ๋งํฌ์ ๋ค๋ฅธ ์ ]. ํ์ง๋ง, orphanRemoval์ ํตํด ์ง์ฐ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ. 6. 4๋ฒ์ ๊ฒฝ์ฐ dirty checking์ผ๋ก update๋๋ ์ํฉ์ด๋ผ ์๊ฐ (child๋ persistํ์ง ์์์ง๋ง, ์ค์ ๋ก child์ parent fk ์ ๋ฐ์์ด.). ํ์ง๋ง ์ํฉ3, 4๋ฒ์ด ๊ฐ๊ฐ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ ๊ฒ์ ๋ณด์ํ๋ ๋ ์์ ์ด ๋ค๋ฅธ ๊ฒ์ ํ์ธ. ๋ ์์ ์ด ๋ค๋ฅธ ๊ฒ์ ์ด์ ๊ตฌ๋ถ์ด ๋๋๋ฐ, ์ ๋ค๋ฅธ์ง, ์ด๋ป๊ฒ ๋ค๋ฅธ์ง๊ฐ ๊ถ๊ธํฉ๋๋ค. ๋ํ ์ผํ ์ํฉ์ ๋ฐ๋ก ์ง์ ์ง๋ฌธ์ ํ์ธํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.. ๋ชจ๋ ์์ฝํ ๋ด์ฉ์ ๋๋ค.
- 2
- 22
- 3.4K
Q&A
OrderItem์ DB์์ ์ง์ฐ๊ณ ์ ํ ๋
๋งํฌ ์ ์ง๋ฌธํ์ ๋ถ์, CascadeType.ALL, CascadeType.PERSIST๋ก ํ๋ฉด ๋๋๋ฐ ๊ทธ ๋ฐ์ ์ ๋๋ ์ํฉ์์์ ์ง๋ฌธ์ธ๋ฐ, ์ ๋ ์ํฉ์ด ๋ฌ๋ผ ์ด๋ฏธ CascadeType.ALL ์ต์ ์ ์ผ์ง๋ง ๋์ง ์๋ ์ํฉ์ด์์ต๋๋ค. ์ฝ๋ ํ๋ฆ์ด ๋ฌ๋ผ ๋ณด์ด์ง ์์๋ฐ ์ CascadeType.ALL๋ก ํ์์ ๋ ์ ์ ๋ ๊น ์ถ์ด, ์ฝ๋๋ฅผ ๊ณ์ ์ดํด๋ณด๊ณ ์ฌ๋ฌ ๊ฐ์ง ์๋ ํด๋ณด๋ฉด์ ์ํฉ์ ์กฐ๊ธ ์ขํ๋๊ฐ ๋ณด์์ต๋๋ค. ๊ฒฐ๋ก ์, ์ ๋ parent๋ฅผ ์์ํํ ํ child๋ฅผ ์ถ๊ฐํ๋ ์ํฉ์ด ์์๊ณ , ๊ทธ๋ฐ ์ํฉ์ผ ๋์ orphanRemoval์ด ์๋์ ํ์ง ์์์ต๋๋ค. ์ ์ค๋ช ์ฃผ์ ๊ฒ์๊ธ-์ฒจ๋ถํ์ผ ๊ด๊ณ๊ฐ ์๋ค๊ณ ๊ฐ์ ์ ํ์ ๋, public class Post { // ... @OneToMany(mappedBy = "post", cascade = CascadeType.ALL, orphanRemoval = true) private List files = new ArrayList(); } public class AttachedFile { // ... @ManyToOne(fetch = FetchType.LAZY) private Post post; } Post๋ฅผ file ์์ด ์์ฑํ๊ณ ํผ์ ์์ํํ ๋ค, ๋์ค์ file์ ์์ฑํ์ฌ Post์ ์ฐ๊ด๊ด๊ณ๋ฅผ ๋งบ์ด์ค ๋ ์๋์ ๊ฐ์ด ์ถ๊ฐํด์คฌ์ต๋๋ค. // ์ด๋ ๊ฒ ๊ทธ๋๋ก ์์ฑํ์ง ์์์ง๋ง, ์ด ๋ ๊ฐ ๋ชจ๋ ์ฐ๊ฒฐํ๋ค๋ ์๋ฏธ๋ก ์์ฑํฉ๋๋ค.post.files.add(attachedFile);attachedFile.setPost(post); ์ถ๊ฐํ ํ์๋ Post์ชฝ์์ save๋ฅผ (persist๋ฅผ) ํด์คฌ์ต๋๋ค. ์ ๋ ์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ CASCADE๋ก ๋ฌถ์ฌ ์์ด์ dirty checking์ด ์์์ ์ถ๊ฐํด์ฃผ๋ฆฌ๋ผ ์๊ฐํ๋ฉฐ, ์์ํํ ํ์ ์ถ๊ฐํด๋ ๋ค๋ฅด์ง ์์ ๊ฒ์ด๋ผ ์๊ฐํ๋๋ฐ orphanRemoval์ด ๋์ง ์์ต๋๋ค.. ์ด๋ ๊ฒ ํ๋, (post๋ฅผ ์ฒ์ persistํ ๋ ์ถ๊ฐํ์ง ์์) attachedFile์ fk์ธ board_id๋ ์ ๋ฐ์์ค์ง๋ง, orphanRemoval์ด ๋์ง ์๋๋ผ๊ตฌ์. ์ค๋ ํ๋ฃจ์ข ์ผ ์ด๊ฑฐ๋ง ๋ณด๊ณ ์๋๋ฐ, ์์ง ๊ตฌ๊ธ๋ง์ผ๋ก๋ ๋ต์ ๋ชป ๊ตฌํ์ต๋๋ค. ํน์ ์ด์ ๋ฅผ ์ ์ ์์๊น์?
- 2
- 22
- 3.4K
Q&A
OrderItem์ DB์์ ์ง์ฐ๊ณ ์ ํ ๋
์น์ ํ ์๋ ค์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค! ์ ์ง๋ฌธ์ ์ ๋ถ ์ดํดํ์ต๋๋ค๋ง, ์์ง ์ ๊ฐ ์ดํด๊ฐ ์๋ ๋ถ๋ถ์ด ์กฐ๊ธ ์์ต๋๋ค. ์ ์ผ ์ฒ์์ ๋๋ฆฐ ์ง๋ฌธ ์ํฉ์์ orphanRemoval = true๋ก ํ๊ณ , ์ฐ๊ด๊ด๊ณ๋ฅผ null๋ก ์์ ๋ ์ญ์ ๊ฐ ๋์ง ์๋๋ผ๊ตฌ์. (์ฒซ ์ง๋ฌธ์ ๋ฆฌ์คํธ ๋์ด์๋ 4๊ฐ ๋ชจ๋ ์ ์ฉํ ์ํ์ ๋๋ค.) ์์์ ๋ง์์ฃผ์ ๋๋ก em.remove()๋ก ์ง์ ์ญ์ ํ๋ฉด ๋๊ธดํ์ง๋ง, orphanRemoval์ ๊ณ์ ๋ง์์ฃผ์๋ ๊ฒ์ผ๋ก ๋ณด์ ์๋ ์ ์์ ์ผ๋ก ์ฐ๊ด๊ด๊ณ๋ฅผ ๋์ผ๋ฉด ์ญ์ ๋์ด์ผ ํ๋ ๊ฒ ๊ฐ์์์! OrderItem์ ์ฐ๊ฒฐ๋์ด ์๋ ์ฐ๊ด๊ด๊ณ๋ Order์ Item ๋ฟ์ธ ๊ฒ ๊ฐ์๋ฐ (orphanRemoval ์ต์ ์ด ๋ค์ด๊ฐ Order์์ ์ฐ๊ด๊ด๊ณ๋ง ๋์ผ๋ฉด ๋ผ์ผ ํ๋ ๊ฒ ๊ฐ์๋ฐ), ์ด๋ค ๋ถ๋ถ์ด ๋ฌธ์ ์ผ๊น์?
- 2
- 22
- 3.4K
Q&A
OrderItem์ DB์์ ์ง์ฐ๊ณ ์ ํ ๋
์ค๊ณ์ Repository๊ฐ ํ์ ์์์ง ์ ์๊ฐํด๋ณด๊ณ , ๊ฐ์ธ ์์ ๋๋ ๊ฒ์ ํ ํด ์ ๋ง ํ์์์ ๋์๋ง CASCADE๋ฅผ ์ฌ์ฉํ๋ค๋ ๋ง์์ด๊ตฐ์. ์น์ ํ ๋ต๋ณ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค! ๊ทธ๋ ๋ค๋ฉด, ์ ๋ต๋ณ์์ ๊ฒ์๋ฌผ์ ์ํ ์ฒจ๋ถํ์ผ๋ฅผ ์์๋ก ๋ค ๋, ์ฒจ๋ถํ์ผ์ด ์์ ํ ๊ฒ์๋ฌผ ์์ ์ Repository๋ ํ์์์ ๊ฒ ๊ฐ์ CASCADE๋ก ๋ฌถ์ด๋ฒ๋ ธ๋๋ฐ, ๋์ค์ ๊ฒ์๋ฌผ ์ญ์ ์์ด ์ฒจ๋ถํ์ผ๋ง ์ญ์ ํ๊ธฐ ์ํด ๊ฒ์๋ฌผRepository ๋ด์ em.remove(์ฒจ๋ถํ์ผ)๊ณผ ๊ฐ์ ํ๋์ ํ๋ ํจ์๋ฅผ ๋ฃ๋ ๊ฒ์ ์๋ชป๋ ์ค๊ณ์ธ๊ฐ์? ์ ์ค๊ณ๊ฐ ์๋ชป๋ ์ค๊ณ์ธ์ง, em.remove(์ฒจ๋ถํ์ผ)๊ณผ ๊ฐ์ด ์ง์ ์ฒจ๋ถํ์ผ์ ๊ฑด๋๋ ค์ผ ํ๋ ์ผ์ด ์๋ค๋ฉด ์ฒจ๋ถํ์ผRepository ๋ก ๋ฌด์กฐ๊ฑด ๋นผ๋ด์ผํ๋์ง ๊ถ๊ธํฉ๋๋ค.
- 2
- 22
- 3.4K




