【问题标题】:JDO architecture: One to many relationship and cascading deletingJDO架构:一对多关系和级联删除
【发布时间】:2011-03-01 10:22:50
【问题描述】:

我是面向对象数据库设计的新手,我正在尝试了解我应该如何在 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世界中不重复数据,在众多部门中只有一份产品数据?接下来的问题是,假设我删除了一个特定的产品,每个部门如何知道它被删除了?

【问题讨论】:

    标签: java google-app-engine persistence jdo object-oriented-database


    【解决方案1】:

    您需要将以下内容添加到Department类的相关成员中。另外,请参阅 App Engine documentation 中的相关部分。

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

    【讨论】:

    • 你会说在我的特定示例中我真的应该使用无主一对多关系吗? code.google.com/appengine/docs/java/datastore/…
    • 如果您需要了解特定产品的部门,那么双向关系使这变得非常容易。如果您不需要经常或经常这样做,则可能没有必要。我真的看不出有什么害处。
    猜你喜欢
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 2016-01-17
    • 2017-06-02
    相关资源
    最近更新 更多