¿Qué hace realmente CascadeType.REFRESH?
Pregunta
¿Qué hace realmente el CascadeType.REFRESH
?
La definición para ello es
Cuando actualizamos una entidad, todas las entidades que se encuentran en este campo también se actualizan
pero, ¿qué significa esto en la práctica? ¿Podría alguien darme un ejemplo simple?
Solución
Las descripciones individuales de CascadeType pueden ser un poco confusas, pero hay una manera fácil de averiguarlo a partir del caso general.
Para cualquiera de los valores de CascadeType
, significa que si se llama a la operación X
en una instancia mediante la interfaz EntityManager
, y esa instancia tiene referencias a otras instancias de la entidad, y esa asociación tiene CascadeType.X
definido, entonces la operación EntityManager
también se aplicará a esa entidad asociada.
Entonces EntityManager.refresh ()
se define como:
Actualizar el estado de la instancia desde La base de datos, sobrescribiendo los cambios realizados. a la entidad, en su caso.
Entonces, si la entidad A tiene una referencia a la entidad B, y esa referencia se anota con @ CascadeType.REFRESH
, y se llama EntityManager.refresh (A)
, entonces EntityManager.refresh (B)
también se llama implícitamente.
Otros consejos
Recuperación por actualización: Los objetos gestionados se pueden volver a cargar desde la base de datos utilizando el método de actualización:
El contenido del objeto administrado en la memoria se descarta (incluidos los cambios, si corresponde) y se reemplaza por los datos que se recuperan de la base de datos. Esto podría ser útil para asegurar que la aplicación se ocupe de la versión más actualizada de un objeto de entidad, en caso de que haya sido cambiado por otro EntityManager desde que se recuperó.
Fuente: http://www.objectdb.com/java/jpa/persistence/ recuperar