Архитектура JDO: отношения один ко многим и каскадное удаление

Я новичок в объектно-ориентированном проектировании баз данных и пытаюсь понять, как мне следует структурировать свои классы в JDO для движка приложений Google, особенно отношения один ко многим.

Допустим, я строю структуру для универмага, в котором много отделов, а в каждом отделе много продуктов. Поэтому я хотел бы иметь класс с именем 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 и иметь только одну копию данных о продуктах во многих отделах? И следующий вопрос, скажем, я удаляю конкретный продукт, откуда каждый отдел знает, что он был удален?

1 ответ

Решение

Вам необходимо добавить следующее к соответствующему члену класса Департамента. Также см. Раздел об этом в документации App Engine.

@Persistent
@Element(dependent = "true")
private List<Product> products; 
Другие вопросы по тегам