인프런 커뮤니티 질문&답변
질문있습니다
작성
·
181
0
안녕하세요!
4:58초 부분에서 질문이 있습니다.
1.cascade가 Order을 삭제할 경우에나 저장할 경우에나 편리하게 한번에 처리해주긴 하지만 orderItem이 여러개 일 경우 save 쿼리가 여러번 나가는 것과 Order를 삭제하게 된다면 cascade에 따라 OrderItem개수만큼의 delete 쿼리가 나가는 것을 확인했습니다.
이렇게 된다면 cascade를 제거하고 벌크성 쿼리를 따로 만들어서 사용하는게 더 효율적이지 않을까 라는 고민이 드는데 보통 실무에서는 어떻게 하는지 궁금합니다.
2. 위 질문에서 만약 cascade보다 벌크성 쿼리의 사용을 선택했다고 가졍해보겠습니다. 만약 Order에 엮여있는 cascade가 Oderitems 하나가 아니라 여러개 있다면 이걸 다 벌크성 쿼리로 바꿔줄 경우(insert에 대한 벌크성, delete에 대한 벌크성 쿼리) order 자체를 삭제하게 될 때 일일이 벌크성 쿼리를 날려줘야하는 불편함이 있는 것 같습니다. 이에 대한 편리한 방법이 있을까요?
3. 수정에 관련된 부분에서 질문입니다.
order이 save된 상태에서 order의 orderitem를 몇개 추가하는 상황이 발생한다면 order의 orderitem 리스트에 add로 추가시켜줘도 이것은 save하는 상황이 아니니 cascade가 적용되지 않을테고, mappedBy이므로 추가시켜도 더디체킹이 되지 않는다는 생각이 듭니다. 그렇다면 이렇게 추가해야하는 상황에서는 추가하고자 하는 OrderItem 엔티티를 save를 하고 java 코드상으로 Order의 orderitem에 추가를 해주면 되는 것일까요?
답변 1
0
안녕하세요. 최준성님
1,2 번은 사실 트레이드 오프 입니다.
추천하는 방법은 코드가 깔끔한 방법을 선택하고, 성능은 정말 문제가 될 때 고민하셔도 됩니다.
3. 이 부분은 제가 답을 바로 적어드리는 것 보다는, 직접 코드로 테스트 해보시고 결과를 남겨주세요^^ 그러면 더 많은 것을 배우실 수 있을거에요.
감사합니다.





