작성
·
116
0
(의문점)
단일참조가 아닐 경우 orphanRemoval을 사용하지 말아야 하는 이유에 대해서는 이해가 됩니다만..
부모가 여럿이 있는 자식 객체가 있다고 했을 때, 하나의 부모가 없어진다해도 다른 부모쪽에는 참조가 되어있으니 아직 고아가 아닌 거 아닌가요?;
마치 아버지가 사망했다고 모자관계까지 끊어버리는 느낌..?
이상하네요;
너무 쓸 데 없이 Real World에 대입해서 생각하는걸까요?
(질문)
orphanRemoval = true를 사용한다는 게 결국 CascadeType.REMOVE와 똑같은 말 아닌가요?
그럼 CascadeType.ALL을 사용하면 굳이 orphanRemoval = true는 사용할 필요가 없는 것 아닌가 싶습니다.
자식의 생명주기를 부모가 관리하기 위해서 꼭 저 두 속성을 함께 써야하는 이유가 무엇인지 궁금합니다.
감사합니다.
답변 1
0
안녕하세요. 현강님
마치 아버지가 사망했다고 모자관계까지 끊어버리는 느낌..?
-> JPA를 구현하는 입장에서 생각해보면, 모든 연관관계가 다 삭제되어야 자식이 삭제된다고 구현해야 한다면? 어떻게 개발해야 할까? 이렇게 고민해보면 답을 찾을 수 있습니다. 데이터베이스에 있는 모든 데이터를 다 찾아서 함께 연결되어 있는 아버지가 있는지 테이블을 다 뒤져보아야 합니다. 기술적으로 이런 부분을 해결할 수도 있지만, 실용적이지는 않은 것이지요. 그래서 애매한 경우에는 orpahnRemovel을 권장하지 않습니다.
질문으로 돌아가서
제가 답을 바로 드릴 수도 있지만, 그러면 더 많은 것을 얻어가실 수 없으니
orphanRemoval = true와 CascadeType.REMOVE의 차이를 코드로 테스트하면서 한번 정리하고 남겨주시겠어요?
답변 감사합니다 강사님
조언해주신대로 실습해보고도 이해가 안 가면 다시 질문 드리겠습니다~
감사합니다!