我正在尝试像大多数新手一样,将购物车网络应用程序实现为javaee&hibernate ..我经历了许多教科书,但仍然有疑问。我希望这里有人可以帮助我纠正想法。

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

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

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

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

谢谢,

标记

源代码:

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

最佳答案

创建发票记录后(当用户购买某些物品时),是否应将相应的商品保存在数据库中?


这完全取决于您的业务规则。您想将来恢复这些信息吗?我想可能是。然后它们应该是持久的。

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

关于java - Cartitem和发票的生命周期关系..怀疑实现购物车,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6582554/

10-11 11:50