[TIL] 230726 Cascade, orphanRemoval

CountryGirlΒ·2023λ…„ 7μ›” 26일

TIL

λͺ©λ‘ 보기
34/80

πŸ“Œ μ˜μ†μ„± 전이

: μ˜μ† μƒνƒœμ˜ Entity μ—μ„œ μˆ˜ν–‰λ˜λŠ” μž‘μ—…λ“€μ΄ μ—°κ΄€λœ EntityκΉŒμ§€ μ „νŒŒλ˜λŠ” 상황

😎 cascade = CascadeType.PERSIST

μ˜μ†μ„± 전이λ₯Ό μ μš©ν•˜μ—¬ ν•΄λ‹Ή Entityλ₯Ό μ €μž₯ν•  λ•Œ μ—°κ΄€λœ EntityκΉŒμ§€ μžλ™μœΌλ‘œ μ €μž₯ν•˜κΈ° μœ„ν•΄μ„œλŠ” μžλ™μœΌλ‘œ μ €μž₯ν•˜λ €κ³  ν•˜λŠ” μ—°κ΄€λœ Entity에 μΆ”κ°€ν•œ 연관관계 Annotation에 cascade = CascadeType.PERSIST μ˜΅μ…˜μ„ μ„€μ •ν•΄μ€€λ‹€.


😎 cascade = CascadeType.REMOVE [VS] orphanremoval = true

cascade = CascadeType.REMOVE

food.getUserList().remove(user);

μ΄λ ‡κ²Œ ν•˜κ²Œ 되면 데이터가 μ—¬μ „νžˆ λ‚¨μ•„μžˆλ‹€.

연관관계 끊기 + 데이터 μ‚­μ œ => μ™„λ²½ν•œ 데이터 μ‚­μ œ
cascade = CascadeType.REMOVE μ—μ„œ 데이터λ₯Ό μ‚­μ œν•˜κΈ° μœ„ν•΄μ„  μ΄λ ‡κ²Œ ν•΄μ•Όν•œλ‹€.

userRepository.delete(user);		// Repository 의 데이터λ₯Ό μ‚­μ œ

orphanremoval = true

food.getUserList().remove(user);	// List μ—μ„œ 관계 제거

Listμ—μ„œ removeλ₯Ό ν•˜κ²Œ 되면 연관관계가 끊기고 데이터가 μ‚­μ œκ°€ λœλ‹€.
cascade = CascadeType.REMOVE κΈ°λŠ₯이 μžˆλ‹€.

연관관계 끊기(+ 데이터 μ‚­μ œ) => μ™„λ²½ν•œ 데이터 μ‚­μ œ


🚨 ManyToOne이 μ„€μ •λœ EntityλŠ” orphanremoval μ˜΅μ…˜μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€ !
➑️ ν•΄λ‹Ή Entity 객체λ₯Ό μ°Έμ‘°ν•˜κ³  μžˆλŠ” λ‹€λ₯Έ 객체듀이 μžˆμ„ 수 있기 λ•Œλ¬Έμ—

cascade = CascadeType.REMOVE, orphanremoval = true λŠ” κ³ λ―Όν•˜λ©΄μ„œ 상황에 맞게 μ‚¬μš©ν•΄μ•Όν•΄ !!!

profile
πŸ’»πŸŒΎμ‹œκ³¨μ†Œλ…€μ˜ 엉망징창 개발 μ„±μž₯μΌμ§€πŸŒΎπŸ’» (2023.05.23 ~)

0개의 λŒ“κΈ€