@Override public void merge(Member member, Cart cart) { if (member != null && cart != null && cart.getMember() == null) { Cart memberCart = member.getCart(); if (memberCart != null) { for (Iterator<CartItem> iterator = cart.getCartItems().iterator(); iterator.hasNext(); ) { CartItem cartItem = iterator.next(); Product product = cartItem.getProduct(); if (memberCart.contains(product)) { if (Cart.MAX_PRODUCT_COUNT != null && memberCart.getCartItems().size() > Cart.MAX_PRODUCT_COUNT) { continue; } CartItem item = memberCart.getCartItem(product); item.add(cartItem.getQuantity()); cartItemDao.merge(item); } else { if (Cart.MAX_PRODUCT_COUNT != null && memberCart.getCartItems().size() >= Cart.MAX_PRODUCT_COUNT) { continue; } iterator.remove(); cartItem.setCart(memberCart); memberCart.getCartItems().add(cartItem); cartItemDao.merge(cartItem); } } cartDao.remove(cart); } else { member.setCart(cart); cart.setMember(member); cartDao.merge(cart); } } }