我正在尝试使用 jpa 在 java 中设计和编写一个基本的商店 Web 应用程序。
当用户在 ShoppingCart
中选择产品时,我会创建一个 Cartitem
列表。
Cartitem 的生命周期与购物车相关。删除购物车后,其所有的 caritem 都必须消失。
(用户购买完成后,购物车将被删除)
之后需要将这些选择转换为订单。我在每个Order
中创建了一个OrderItem
列表。然后我发现每个Caritem都有一个对应的OrderItem。
订单项的生命周期与订单相关。
我是 java/javaee 的初学者..我想知道就设计而言我是否走在正确的轨道上..
这是设计此类应用程序的正确方法吗? CartItem
和 OrderItem
类看起来太相似,我想知道是否有任何冗余。
我的实体类现在看起来像这样。
class ShoppinCart{
@OneToMany(orphanRemoval=true, cascade={CascadeType.ALL},mappedBy="order")
private List<CartItem> citems;
...
}
class CartItem{
Product product;
int quantity;
...
@ManyToOne
ShoppingCart cart;
}
class Order{
@OneToMany(orphanRemoval=true, cascade={CascadeType.ALL},mappedBy="order")
private List<OrderItem> orderItem;
private Date orderDate;
private Customer customer;
}
class OrderItem{
Product product;
int quantity;
...
@ManyToOne
Order order;
}
最佳答案
是的,CartItem 和 OrderItem 是多余的。您不需要在 CartItem 内存储购物车引用。 在我看来,购物车只是一个尚未最终确定的订单。您可能需要为订单添加状态:待处理、已发货、已取消等,因此购物卡可能只是处于待处理状态的订单。如果您需要一个单独的类,那么只需将其包装起来,这样 ShoppingCart 就有一个订单(并且没有 CartItem 列表)。
关于java - 购物车应用程序中类(CartItem 和 OrderItem)设计的冗余,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7348346/