2011-09-27 9 views

Respuesta

13

NHibernate Version se utiliza cuando desea implementar Optimistic concurrency control. Sin habilitar el control de concurrencia optimista y el bloqueo de su aplicación utilizará la estrategia "Último compromiso gana". Sus usuarios pueden experimentar actualizaciones perdidas si dos transacciones están modificando el mismo objeto más o menos al mismo tiempo. La estrategia más apropiada se llama "First commit wins". En este escenario, la segunda transacción fallará con un error que diga algo así como: Alguien ya cometió modificaciones a los datos que está a punto de comprometer. Has estado trabajando con datos obsoletos . Por favor, reinicie la conversación con nuevos datos.

De Java Persistence with Hibernate:

Hibernate proporciona versionado automático. Cada instancia de entidad tiene una versión , que puede ser un número o una marca de tiempo. Hibernate incrementa la versión de un objeto cuando se modifica, compara versiones automáticamente, y lanza una excepción si se detecta un conflicto. En consecuencia, usted agrega esta propiedad de versión a todas sus clases de entidades persistentes a habilite el bloqueo optimista. ... El número de versión es solo un valor de contador; no tiene ningún valor semántico útil . La columna adicional en la tabla de entidades es utilizada por su aplicación Hibernate. Tenga en cuenta que todas las demás aplicaciones que accedan a la misma base de datos pueden (y probablemente deberían) también implementar versiones optimistas y utilizar la misma columna de la versión .

+0

Gracias por la explicación. –

Cuestiones relacionadas