Saltar la navegación

4.4.- Actualización de objetos estructurados.

Dibujo que muestra una elipse verde amarillo y celeste conteniendo otras dos elipses de colores. La elipse verde rotulada como objetoA, la celeste como objetoB y la amarilla como objetoC.

Los objetos estructurados son objetos que contienen a su vez a otros objetos (objetos hijo u objetos miembro).

En el caso de objetos estructurados se habla de diferentes niveles de profundidad del objeto. El nivel más alto, nivel 1, será el que corresponde a la definición del objeto estrucutrado (objeto padre), el siguiente nivel, nivel 2, corresponderá a la definición del objeto hijo y así sucesivamente podrá haber un nivel 3, 4... dependiendo de que los objetos hijos a su vez incluyan en su definición a otro u otros objetos miembro.

En el siguiente ejemplo, definimos la clase charla (objeto estructurado padre) que incorpora a un objeto ponente (objeto miembro). El nivel más alto de profundidad o nivel 1 es el que corresponde a la definición de charla y el nivel 2 corresponderá a la definición del objeto ponente.

¿Cómo se almacenan, consultan y actualizan los objetos estructurados en Db4o?

  • Los objetos estructurados se almacenan asignando valores con set() y después persistiendo el objeto con store(). Al almacenar un objeto estructurado del nivel más alto, se almacenarán de forma implícita todos los objetos hijo.
  • Las consultas se realizan por cualquiera de los sistemas soportados por el gestor y se podrá ir descendiendo por los diferentes niveles de profundidad.
  • La eliminación o borrado de un objeto estructurado se realiza mediante el método delete(). Por defecto, no se eliminarán los objetos miembro. Para eliminar objetos estructurados en cascada o de forma recursiva, eliminando los objetos miembro, habrá que configurar de modo apropiado la base de objetos antes de abrirla, mediante el paquete com.db4o.config. En el caso de modo embebido, se hará mediante la interface EmbeddedConfiguration. En la nueva configuración se debe indicar cascadeOnDelete(true).
  • La modificación se realizará actualizando los nuevos valores mediante el método set(). Por defecto las modificaciones solo afectan al nivel más alto. Para actualizar de forma recursiva todos los objeto miembro habrá que indicar en la configuración cascadeOnUpdate(true).

Desde el siguiente enlace puedes descargar el proyecto completo que realiza diferentes consultas y actualización de objetos estructurados.

En este otro enlace dispones de un ejemplo con eliminación y modificación de charlas en cascada.

Citas para pensar

"No basta saber, se debe también aplicar. No es suficiente querer, se debe también hacer".

Johann W. Goethe

Autoevaluación

Señala si la siguiente afirmación es verdadera o falsa.

Pregunta 1

La actualización de un objeto estructurado supone la actualización de todos sus objetos hijo.