2010-06-08 124 views
3

我是新來的面向對象的數據庫設計,我想了解我應該如何構建我的JDO的類應用程序引擎,特別是一對多的關係。JDO架構:一對多關係和級聯刪除

比方說,我正在構建一個百貨公司的結構,其中有很多部門,每個部門都有很多產品。所以我想要一個名爲Department的類,其中一個變量是Product類的列表。

@PersistenceCapable 
public class Department { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private String deptID; 

    @Persistent 
    private String departmentName; 

    @Persistent 
    private List<Product> products; 

} 

@PersistenceCapable 
public class Product { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private String productID; 

    @Persistent 
    private String productName; 

} 

但是一個產品可以在多個部門(如電池可以在電子產品和家居用品)。所以接下來的問題是,如何在OOD世界中複製數據,並且在多個部門中只有一個產品數據副本?接下來的問題是,假設我刪除了一個特定的產品,每個部門如何知道它被刪除?

回答

2

您需要將以下內容添加到Department類的相關成員。另請參閱App Engine documentation中的相關部分。

@Persistent 
@Element(dependent = "true") 
private List<Product> products; 
+0

你會說在我的特殊例子中,我真的應該使用無主的一對多關係嗎? http://code.google.com/appengine/docs/java/datastore/relationships.html#Unowned_Relationships – adam 2010-06-09 01:16:42

+0

如果您需要了解某個特定產品的部門,那麼雙向關係會非常容易。如果你不需要這麼做或者經常這樣做,那麼它可能不是必需的。我真的沒有看到任何傷害。 – 2010-06-09 05:16:41