有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

cartitem和发票的java寿命关系。。购物车

我正试图实现一个购物车web应用程序,就像大多数javaee&;新手一样;冬眠我翻阅了很多教科书,仍然有疑问。我希望这里有人能帮我纠正我的想法

我实现了一个产品类和一个CartItem。CartItem具有产品字段和数量字段。当用户想要购买产品时,他会将CartItem添加到购物车中

为了对用户的购买行为进行建模,我编写了一个带有一组CartItem对象的Invoice类。它还有一个客户字段。现在,我对相应的表以及它们的生命周期应该如何关联感到有点困惑

创建发票记录后(当用户购买某些项目时),是否应将相应的cartitems保存在db中?或者,一旦用户购买了商品,是否应删除cartitem记录

如果有人能解释这些,那就太好了

谢谢

标记

源代码:

class CartItem {
    private Long cartItem_id;
    private Product product;
    private int quantity;
...
}

class Invoice {
    private Long invoice_id;
    private Customer customer;
    private Set<CartItem> cartItems;
    private Date invoiceDate;
    private int invoiceNumber;
    private double totalAmount;
...
}

我创建了表CARTITEM和INVOICE,如下所示

CREATE TABLE CARTITEM(
    CARTITEM_ID BIGINT NOT NULL PRIMARY KEY IDENTITY,
    QUANTITY INTEGER,
    PRODUCT_ID BIGINT,
    FOREIGN KEY(PRODUCT_ID) REFERENCES PRODUCT(PRODUCT_ID)
)

CREATE TABLE INVOICE(
    INVOICE_ID BIGINT NOT NULL PRIMARY KEY IDENTITY,
    INVOICE_NUMBER INTEGER,
    INVOICE_DATE DATE,
    TOTAL_AMOUNT DOUBLE,    
    CUSTOMER_ID BIGINT,
    UNIQUE(INVOICE_NUMBER),
    FOREIGN KEY(CUSTOMER_ID) REFERENCES CUSTOMER(CUSTOMER_ID)
)

共 (2) 个答案

  1. # 1 楼答案

    After an Invoice record is created(when user buys some items), should the corresponding cartitems be kept in db?

    这完全取决于你的商业规则。您想在将来恢复这些信息吗<我想大概是吧。那么他们应该坚持不懈

    如果不想持久化它们,则无需创建数据库表(除非需要一些崩溃恢复)。您可以将CarItem保持在会话中(假设它是一个web应用程序)

  2. # 2 楼答案

    好的,如果您要持久化发票,那么只有持久化组成发票的CartItems才有意义。否则,例如,用户如何能够稍后返回并重新打印发票

    将外键添加到CARTITEM表以将其绑定到发票,即可设置