Tipos de cascada JPA de Hibernación

Aprendimos sobre la asignación de entidades asociadas en hibernación ya en tutoriales anteriores, como la asignación de uno a uno y las asignaciones de uno a muchos. Allí queríamos guardar la entidad asignada cada vez que se guardara la entidad propietaria de la relación. Para habilitar esto, usamos el atributo «CascadeType». En este tutorial de Tipos de cascada de JPA, aprenderemos sobre varios tipos de opciones disponibles para conectar en cascada a través de CascadeType.

¿Cómo Funcionan los Tipos de Cascada JPA?

Antes de seguir adelante, veamos cómo se define este atributo de tipo cascada en su código. Vamos a tener un ejemplo para una comprensión más clara. Tomemos un escenario en el que un empleado puede tener varias cuentas, pero una cuenta debe estar asociada a un solo empleado. Vamos a crear entidades con un mínimo de información en aras de la claridad.

Entidad de empleo.cuenta java

.java

Mire la línea en negrita en el código fuente anterior para EmployeeEntity.java. Se define «cascade=CascadeType.ALL» y significa que cualquier cambio ocurrido en el EmployeeEntity debe cascada a AccountEntity así. Si guarda a un empleado, todas las cuentas asociadas también se guardarán en la base de datos. Si elimina a un empleado, también se eliminarán todas las cuentas asociadas a ese empleado. Bastante Simple.

Pero, ¿qué pasa si solo queremos guardar en cascada las operaciones, pero no eliminar la operación? Entonces necesitamos especificarlo claramente usando el siguiente código.

Ahora solo cuando se llama a los métodos save() o persist() usando instancia de empleado, solo se persistirán las cuentas. Si se llama a cualquier otro método en la sesión, su efecto no afectará/en cascada a las cuentas.

Tipos de cascada JPA

Los tipos de cascada soportados por la arquitectura de persistencia Java son los siguientes:

  1. CascadeType.PERSIST: tipo de cascada presist significa que las operaciones save() o persist() se ejecutan en cascada a entidades relacionadas.
  2. Tipo de cascada.FUSIONAR : el tipo de cascada merge significa que las entidades relacionadas se fusionan cuando se fusiona la entidad propietaria.
  3. Tipo de cascada.REFRESH: cascade type refresh hace lo mismo para la operación refresh ().
  4. Tipo de cascada.ELIMINAR: tipo en cascada remove elimina todas las asociaciones de entidades relacionadas con esta configuración cuando se elimina la entidad propietaria.
  5. Tipo de cascada.SEPARAR: el tipo de cascada detach separa todas las entidades relacionadas si se produce una» separación manual».
  6. Tipo de cascada.TODO : el tipo de cascada all es una abreviatura de todas las operaciones en cascada anteriores.

No hay un tipo de cascada predeterminado en JPA. De forma predeterminada, no hay operaciones en cascada.

La opción de configuración en cascada acepta una matriz de tipos en cascada; por lo tanto, para incluir solo actualizaciones y fusiones en la operación en cascada para una relación de Uno a muchos, como en nuestro ejemplo, puede ver lo siguiente:

La conexión en cascada hará que la recopilación de cuentas solo se fusione y actualice.

Tipos de cascada de hibernación

Ahora vamos a entender qué es la cascada en hibernación en qué escenario la usamos.

Aparte de los tipos de cascada proporcionados por JPA, hay una operación de cascada más en hibernate que no forma parte del conjunto normal mencionado anteriormente, llamada «eliminación huérfana». Esto elimina un objeto de propiedad de la base de datos cuando se elimina de su relación de propiedad.

Entendamos con un ejemplo. En nuestro ejemplo de Entidad de cuenta y empleado, los he actualizado como se muestra a continuación y he mencionado «orphanRemoval = true» en las cuentas. Esencialmente significa que cada vez que voy a eliminar una «cuenta de conjunto de cuentas» (lo que significa que estoy eliminando la relación entre esa cuenta y el Empleado); la entidad de la cuenta que no está asociada con ningún otro empleado en la base de datos (es decir, huérfana) también debe eliminarse.

Entidad de empleo.cuenta java

.java

TestOrphanRemovalCascade.java

Es una muy buena manera de eliminar los elementos coincidentes/no coincidentes de una colección (es decir, relaciones de muchos a uno o de uno a muchos). Solo tienes que quitar el artículo de la colección e hibernar, encargarte del resto de las cosas por ti. Comprobará si se hace referencia a la entidad desde cualquier lugar o no; Si no lo es, eliminará la entidad de la propia base de datos.

Hágame saber sus pensamientos y preguntas sobre los tipos de cascada hibernate 5 o los tipos de cascada JPA, si los hay.

Feliz Aprendizaje !!

Blog de Oracle sobre tipos de cascada

¿Fue útil esta publicación?

Háganos saber si le gustó la publicación. Es la única manera de mejorar.
No

Deja una respuesta

Tu dirección de correo electrónico no será publicada.