sql >> Base de Datos >  >> RDS >> Mysql

Bloqueo optimista de Hibernate... ¿cómo funciona?

Para ser precisos, no se refiere al bloqueo optimista, sino a la concurrencia optimista (sin bloqueo). El uso de una marca de tiempo para la versión es solo para compatibilidad con bases de datos heredadas, porque una base de datos moderna puede (al menos en teoría) funcionar más rápido que su precisión de almacenamiento. una marca de tiempo.

Usar la propiedad de versión entera es muy simple:

  • En inserción:establezca la versión en 1
  • Al actualizar y eliminar:aumente la versión con 1 y agregue "where [email protected] " a cada instrucción SQL. Devuelva el número de registros modificados. Lance una StaleObjectStateException cuando el número de registros modificados sea diferente al esperado.

Personalmente, no crearía dos aplicaciones separadas que escriban los mismos datos en una situación no heredada, porque eso significa que la lógica comercial debe duplicarse y los cambios deben aplicarse a dos aplicaciones, también cuando el cambio es relevante solo para uno de las aplicaciones.