arquitectura JDO: uno a muchos y eliminación en cascada
-
25-09-2019 - |
Pregunta
Soy nuevo en diseños de bases de datos orientadas a objetos y estoy tratando de comprender cómo debería ser la estructuración de mis clases de JDO para Google App Engine, particularmente relaciones uno a muchos.
Vamos a decir que estoy construyendo una estructura de unos grandes almacenes, donde hay muchos departamentos y cada departamento tiene muchos productos. Así que yo quiero tener una clase llamada Departamento, con una variable que es una lista de una clase de productos.
@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;
}
Sin embargo, un producto puede estar en más de un departamento (como una batería podría estar en la electrónica y artículos de uso doméstico). Así que la siguiente pregunta es, ¿cómo no datos duplicados en el mundo OOD y tienen sólo una copia de los datos de productos en numerosos departamentos? Y la siguiente pregunta es, digamos elimino un producto en particular, ¿cómo cada uno de los departamentos saben que se ha eliminado?
Solución
Es necesario añadir lo siguiente al miembro correspondiente de la clase Departamento. También, ver el apartado especial en el App Engine documentación .
@Persistent
@Element(dependent = "true")
private List<Product> products;