2011-09-08 28 views
2

我正嘗試在java中使用jpa設計和編寫基本商店web應用程序。 當用戶選擇ShoppingCart中的產品時,我創建了一個Cartitem s的列表。 Cartitem的使用壽命與購物車掛鉤。當購物車被刪除時,其所有cartitem必須放行。 (用戶完成購物後,購物車被刪除) 之後,這些選擇需要轉換爲訂單。我在每個Order中創建了一個OrderItem s的清單。然後我發現每個Cartitem都有相應的OrderItem。 Orderitem的生命週期與訂單相關聯。購物車應用程序中的類(CartItem和OrderItem)設計中的冗餘

我是java/javaee的初學者..我想知道我是否在正確的軌道上,只要設計有關... 這是設計這樣一個應用程序的正確方法。CartItemOrderItem類看起來太像了,我想知道是否有任何冗餘。

我的實體類現在看起來像這樣。

class ShoppinCart{ 

    @OneToMany(orphanRemoval=true, cascade={CascadeType.ALL},mappedBy="order") 
    private List<CartItem> citems; 
    ... 
} 

class CartItem{ 
    Product product; 
    int quantity; 
    ... 
    @ManyToOne 
    ShoppingCart cart; 
} 

class Order{ 
    @OneToMany(orphanRemoval=true, cascade={CascadeType.ALL},mappedBy="order") 
    private List<OrderItem> orderItem; 
    private Date orderDate; 
    private Customer customer; 
} 

class OrderItem{ 
    Product product; 
    int quantity; 
    ... 
    @ManyToOne 
    Order order; 
} 

回答

3

是CartItem和OrderItem是多餘的。您不需要在CartItem中存儲購物車參考。 在我看來,ShoppingCart只是一個尚未最終確定的訂單。您可能需要爲訂單添加狀態,暫停,調度,取消等,因此購物卡可能只是具有待處理狀態的訂單。如果您需要單獨的課程,那麼只需將其包裝,以便ShoppingCart具有一個訂單(並且不包含CartItem列表)。

0

我會創建常用超級塊 SomeItem,如果你需要一些額外的信息(如itemDeliveryDate)將它添加到子類。具有CartItem作爲OrderItem構造函數的參數將是有用的。

此外,不需要從物品到物品的導航(購物車或訂單),刪除標記爲的@ManyToOne屬性。

相關問題