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

Bloquear una tabla con hibernate

Debe usar el bloqueo pesimista, que se puede lograr

setLockMode(String alias, LockMode lockMode) 

en la consulta y use LockMode.UPGRADE .

Consulte Consulta.setLockMode

Sin embargo, esto ciertamente matará la escalabilidad y el rendimiento si está accediendo mucho a esta tabla. Es mejor usar una secuencia u otra estrategia es crear un servicio para asignar números (por ejemplo, un SSB) que tome 100 números a la vez, actualice la base de datos y los distribuya. Eso le ahorra 198 accesos a la base de datos.

ACTUALIZAR:

También tendrá que modificar ligeramente el diseño de su mesa. Es mejor tener una sola fila con una identificación conocida y almacenar el número que está incrementando en otra columna. Luego, debe actualizar la fila en lugar de eliminar la fila anterior y agregar una nueva. De lo contrario, la estrategia de bloqueo de filas no funcionará.

ACTUALIZACIÓN2:

OP encontró que lo siguiente funcionó:

session.get(class.Class, id, lockOption)