Primero olvidemos Hibernate. Supongamos que tengo dos tablas, A & B. Dos transacciones están actualizando los mismos registros en estas dos tablas, pero txn 1 actualiza B y luego A, mientras que txn 2 actualiza A luego B. Este es un típico ejemplo de interbloqueo. La forma más común de evitar esto es predefinir el orden de adquisición de recursos. Por ejemplo, debemos actualizar la tabla A y luego B.Cómo está Hibernate decidiendo el orden de actualización/inserción/eliminación
Volver a Hibernate. Cuando estamos actualizando muchas entidades en una sesión, una vez que estoy descargando la sesión, los cambios de las diferentes entidades generarán las correspondientes instrucciones de inserción/actualización/eliminación en la base de datos. ¿Hibernate tiene algún algoritmo para decidir el orden de actualización entre las entidades? De lo contrario, ¿cuál es la forma en que Hibernate utilizó para prevenir la situación de estancamiento descrita en el 1er párrafo?
Si Hibernate mantiene el orden, ¿cómo puedo saber o controlar el pedido? No quiero que mi actualización explícita en conflictos de DB con Hibernate, y causar un punto muerto.
Acepte mi disculpa porque, por alguna razón desconocida, me perdí esta respuesta antes :) Creo que el resultado de su examen en el código de Hibernate realmente da la respuesta más confiable hasta ahora. Buenas sugerencias especialmente para el punto 1 y 2 –