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)
)
# 1 楼答案
这完全取决于你的商业规则。您想在将来恢复这些信息吗<我想大概是吧。那么他们应该坚持不懈
如果不想持久化它们,则无需创建数据库表(除非需要一些崩溃恢复)。您可以将
CarItem
保持在会话中(假设它是一个web应用程序)# 2 楼答案
好的,如果您要持久化发票,那么只有持久化组成发票的CartItems才有意义。否则,例如,用户如何能够稍后返回并重新打印发票
将外键添加到CARTITEM表以将其绑定到发票,即可设置