0

我正在尝试实现一个购物车网络应用程序,就像大多数 javaee 和休眠的新手一样。我浏览了许多教科书,但仍然有疑问。我希望这里有人可以帮助我纠正我的想法。

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

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

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

如果有人可以阐明这些,那就太好了。

谢谢,

标记

源代码:

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)
)
4

2 回答 2

1

创建发票记录后(当用户购买一些商品时),是否应将相应的caritems保存在db中?

这完全取决于您的业务规则。您想在将来恢复这些信息吗?大概,我猜。然后他们应该坚持不懈。

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

于 2011-07-05T13:32:10.557 回答
1

好吧,如果您要保留发票,那么只有保留构成发票的 CartItems 才有意义。否则,例如,用户如何能够稍后回来重新打印发票?

将外键添加到您的 CARTITEM 表以将其绑定到发票,然后您就设置好了。

于 2011-07-05T14:35:25.457 回答