根据Hibernate文档,属性hibernate.order_updates的详细信息如下:
强制Hibernate根据要更新的项的主键值命令SQL更新。这将减少高度并发系统中的事务死锁。例如真假
因此,通过将此属性设置为false,死锁如何发生。请帮助我理解这一点。
发布于 2014-08-05 21:34:23
当事务1同时更新行1和事务2更新行2时,可能会发生死锁。现在事务1想更新第2行,但是必须等待事务2完成,因为它持有写锁。现在,如果事务2想更新第1行,它必须等待事务1,因为它持有该锁,并且会发生死锁。
正如您将注意到的,这是因为事务使用反向顺序进行更新(事务1,第一行,第1行,然后第2行,事务2,第一行,第2行,第一行)。使用此属性,您可以强制hibernate始终以相同的方式排序,并且不会发生所描述的情况。
https://stackoverflow.com/questions/25146737
复制相似问题