Mapeo de relaciones con JPA

Relaciones

Composición (tiene un)

Las relaciones de composición (“tiene un” o “usa un”) entre objetos tienen las siguientes propiedades:

Dirección. Un padre tiene hijos (dirección: de padre al hijo); un hijo tiene un padre (dirección: del hijo al padre). La relación es unidireccional cuando sólo uno de los extremos tiene acceso al/los objeto(s) en el otro extremo de la relación. La relación es bidireccional cuando ambos extremos de la relación tienen acceso al/los objeto(s) en el otro extremo.

Multiplicidad. También conocida como cardinalidad, hace referencia al número de objetos que pueden participar en cada extremo de la relación. Por ejemplo, la relación padre-hijo en la que un padre puede tener al menos un hijo y uno o más hijos tienen el mismo padre es una relación de Uno-a-Muchos vista desde el padre y de Muchos-a-Uno vista desde el hijo. Las posibles multiplicidades en una relación son:

  • Uno-a-Uno
  • Uno-a-Muchos
  • Muchos-a-Uno
  • Muchos-a-Muchos

Herencia (es un)

La herencia define una relación entre un concepto general y uno o más conceptos específicos basados en el concepto general. Por ejemplo, una “cuenta corriente” y una “caja de ahorro” son manifestaciones específicas del concepto general “cuenta bancaria”.  En el siguiente vídeo se demuestra el mapeo de las relaciones de herencia entre objetos a una BD relacional:

En el siguiente vídeo se demuestra el mapeo de las relaciones entre objetos en una BD relacional:

Propagación de operaciones de persistencia

En el escenario de los clientes de un banco que tienen cajas de ahorro y/o cuentas corrientes, el proceso usual para persistir los datos requiere que primero se persista la entidad “padre”, el cliente en este caso,  y luego persistir las entidades “hijas”, las cuentas en este caso. Un proceso similar se tendría que seguir para eliminar datos, primero eliminamos las cuentas y finalmente eliminamos el cliente. Para reducir la complejidad de este tipo de operaciones podemos solicitar que ciertas operaciones de persistencia se propaguen de las entidades padres a las entidades dependientes, tal cual se demuestra en el siguiente vídeo:

Referencias

[1] Pro JPA 2, Second Edition
[2] Relaciones JPA

Leave a Reply