: μμ μνμ Entity μμ μνλλ μμ
λ€μ΄ μ°κ΄λ EntityκΉμ§ μ νλλ μν©
cascade = CascadeType.PERSISTμμμ± μ μ΄λ₯Ό μ μ©νμ¬ ν΄λΉ Entityλ₯Ό μ μ₯ν λ μ°κ΄λ EntityκΉμ§ μλμΌλ‘ μ μ₯νκΈ° μν΄μλ μλμΌλ‘ μ μ₯νλ €κ³ νλ μ°κ΄λ Entityμ μΆκ°ν μ°κ΄κ΄κ³ Annotationμ cascade = CascadeType.PERSIST μ΅μ
μ μ€μ ν΄μ€λ€.
cascade = CascadeType.REMOVE [VS] orphanremoval = truecascade = CascadeType.REMOVEfood.getUserList().remove(user);
μ΄λ κ² νκ² λλ©΄ λ°μ΄ν°κ° μ¬μ ν λ¨μμλ€.
μ°κ΄κ΄κ³ λκΈ° + λ°μ΄ν° μμ => μλ²½ν λ°μ΄ν° μμ
cascade = CascadeType.REMOVE μμ λ°μ΄ν°λ₯Ό μμ νκΈ° μν΄μ μ΄λ κ² ν΄μΌνλ€.
userRepository.delete(user); // Repository μ λ°μ΄ν°λ₯Ό μμ
orphanremoval = truefood.getUserList().remove(user); // List μμ κ΄κ³ μ κ±°
Listμμ removeλ₯Ό νκ² λλ©΄ μ°κ΄κ΄κ³κ° λκΈ°κ³ λ°μ΄ν°κ° μμ κ° λλ€.
cascade = CascadeType.REMOVE κΈ°λ₯μ΄ μλ€.
μ°κ΄κ΄κ³ λκΈ°(+ λ°μ΄ν° μμ ) => μλ²½ν λ°μ΄ν° μμ
π¨ ManyToOneμ΄ μ€μ λ Entityλ orphanremoval μ΅μ
μ΄ μ‘΄μ¬νμ§ μλλ€ !
β‘οΈ ν΄λΉ Entity κ°μ²΄λ₯Ό μ°Έμ‘°νκ³ μλ λ€λ₯Έ κ°μ²΄λ€μ΄ μμ μ μκΈ° λλ¬Έμ
cascade = CascadeType.REMOVE,orphanremoval = trueλ κ³ λ―Όνλ©΄μ μν©μ λ§κ² μ¬μ©ν΄μΌν΄ !!!