Архитектура 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;