one modes many cascadetype annotation all java jpa

java - modes - ¿Qué hace CascadeType.REFRESH en realidad?



hibernate cascade annotation (2)

¿Qué hace CascadeType.REFRESH realidad?

La definición para esto es

Cuando actualizamos una entidad, todas las entidades contenidas en este campo también se actualizan

¿Pero qué significa esto en la práctica? ¿Podría alguien darme un ejemplo simple?


Las descripciones individuales de CascadeType pueden ser un poco confusas, pero hay una manera fácil de resolverlo a partir del caso general.

Para cualquiera de los valores CascadeType , significa que si se llama a la operación X en una instancia utilizando la interfaz EntityManager , y esa instancia tiene referencias a otras instancias de entidad, y esa asociación tiene CascadeType.X definido, entonces también se aplicará la operación EntityManager a esa entidad asociada.

Así que EntityManager.refresh() se define como:

Actualice el estado de la instancia desde la base de datos, sobrescribiendo los cambios realizados en la entidad, si corresponde.

Entonces, si la entidad A tiene una referencia a la entidad B, y esa referencia se anota con @CascadeType.REFRESH , y se EntityManager.refresh(A) , entonces se llama implícitamente a EntityManager.refresh(B) .


Recuperación por actualización: los objetos administrados se pueden volver a cargar desde la base de datos utilizando el método de actualización:

El contenido del objeto gestionado 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 garantizar que la aplicación trate con la versión más actualizada de un objeto de entidad, en caso de que haya sido modificada por otro EntityManager desde que se recuperó.

Fuente: http://www.objectdb.com/java/jpa/persistence/retrieve