java - 购物车应用程序中类(CartItem 和 OrderItem)设计的冗余

标签 java jpa shopping-cart

我正在尝试使用 jpa 在 java 中设计和编写一个基本的商店 Web 应用程序。 当用户在 ShoppingCart 中选择产品时,我会创建一个 Cartitem 列表。 Cartitem 的生命周期与购物车相关。删除购物车后,其所有的 caritem 都必须消失。 (用户购买完成后,购物车将被删除) 之后需要将这些选择转换为订单。我在每个Order中创建了一个OrderItem列表。然后我发现每个Caritem都有一个对应的OrderItem。 订单项的生命周期与订单相关。

我是 java/javaee 的初学者..我想知道就设计而言我是否走在正确的轨道上.. 这是设计此类应用程序的正确方法吗? CartItemOrderItem 类看起来太相似,我想知道是否有任何冗余。

我的实体类现在看起来像这样。

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/

相关文章:

Java:将秒转换为分钟、小时和天

java - CFX 抛出错误 : "java.io.IOException: HTTPS hostname wrong"

spring - 使用 @ElementCollection 的查询的 DTO 投影导致 'Unable to locate appropriate constructor on class' 错误

javascript - Magento Theme 在 IE (Javascript) 中将产品添加到购物车 2x

javascript - HTML5 中的本地存储表单

java - 通过 GitHub、Sonatype Maven 存储库使 JavaDocs 可用

java - 如何为Cucumber-jvm快速创建测试数据库?

java - 使用 JPA 2.0 标准查询 map

Java 使用 JPA 2.1 和 @ManyToOne 上的 hibernate 部分加载实体

php - 使用 Paypal 锁定模型推车