我知道什么是乐观锁定和悲观锁定,但是当您编写Java代码时,该怎么做呢?假设我将Oracle与Java一起使用,JDBC中是否有任何方法可以帮助我做到这一点?我将如何配置这个东西?任何指针将不胜感激。

最佳答案

您可以通过这种方式在数据库表中实现乐观锁(这是在Hibernate中完成乐观锁的方式):

  • 将整数“版本”列添加到表中。
  • 在相应行的每次更新中增加此列的值。
  • 要获取锁,只需读取该行的“版本”值即可。
  • 将“版本=已获得版本”条件添加到以下内容的where子句中
    您的更新声明。验证更新后受影响的行数。
    如果没有受影响的行-有人已经修改了您的条目。

  • 您的更新应如下所示
    UPDATE mytable SET name = 'Andy', version = 3 WHERE id = 1 and version = 2
    

    当然,这种机制仅在各方都遵循时才有效,这与DBMS提供的不需要特殊处理的锁相反。

    希望这可以帮助。

    10-05 23:29