Closed PromotezCitizen closed 3 weeks ago
In GitLab by @HanSanghyeon on Oct 16, 2024, 16:51
unassigned @HanSanghyeon
In GitLab by @mumunuu on Oct 16, 2024, 18:21
일단 2번은 모든 if문을 평가하므로, 절대 저렇게 하지 않고 업데이트를 저렇게 한 곳에 다 모아두지도 않고 개별적으로 만듭니다..!! 😅
더티체크라는 것도 한번 알아보시고요.
업데이트를 저렇게 find하지 않고, 업데이트에 필요한 인자만 던져서 업데이트 하고, 업데이트가 됐는지 안됐는지는 affectedRow라는 용어를 검색해보세요.
@HanSanghyeon
In GitLab by @HanSanghyeon on Oct 16, 2024, 22:21
현업에서는 2번처럼은 절대 하지 않나보군요. 예상은 했지만 확실하게 알고싶었습니다!
In GitLab by @HanSanghyeon on Oct 16, 2024, 10:07
1번 방식으로 적용하는 것이 좋다고는 생각하지만, 2번 방법으로도 사용할 수 있겠다고 생각되어 현업에서는 어떤 방식이 주로 사용되는지 여쭤보고싶습니다!
@Transactional public void updateStatus(Long id, OrderUpdateRequest.Status request) { Order order = orderRepository.findById(id).orElseThrow(() -> new RuntimeException("Order not found")); if (order != null) { order.setStatus(request.getStatus()); } }
@Transactional public void updateAddress(Long id, OrderUpdateRequest.Address request) { Order order = orderRepository.findById(id).orElseThrow(() -> new RuntimeException("Order not found")); if (order != null) { order.setAddress(request); } }
@Transactional public void update(Long id, Object request) { Order order = orderRepository.findById(id).orElseThrow(() -> new RuntimeException("Order not found")); if (request instanceof OrderUpdateRequest.Invoice) { order.setInvoice((OrderUpdateRequest.Invoice) request); order.setStatus(Order.Status.SHIPPING.getStatus()); return; } if (request instanceof OrderUpdateRequest.Status) { order.setStatus(((OrderUpdateRequest.Status) request).getStatus()); return; } if (request instanceof OrderUpdateRequest.Address) { order.setAddress((OrderUpdateRequest.Address) request); return; } }