我正在尝试像大多数新手一样,将购物车网络应用程序实现为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/