如何从java代码中编写乐观和悲观锁定代码

时间:2012-01-01 03:26:33

标签: java database jdbc optimistic-locking pessimistic-locking

我知道乐观和悲观锁定是什么,但是当你编写java代码时,你是如何做到的?假设我使用Oracle和Java,我在JDBC中有任何方法可以帮助我做到这一点吗?我该如何配置这个东西?任何指针都将受到赞赏。

2 个答案:

答案 0 :(得分:11)

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

  1. 将整数“版本”列添加到您的表格中。
  2. 每次更新相应的行时,请增加此列的值。
  3. 要获得锁定,只需阅读该行的“版本”值。
  4. 将“version = got_version”条件添加到where子句中 你的更新声明。验证更新后受影响的行数。 如果没有行受到影响 - 有人已经修改了您的条目。
  5. 您的更新应该是

    UPDATE mytable SET name = 'Andy', version = 3 WHERE id = 1 and version = 2
    

    当然,这种机制只有在所有各方都遵循它的情况下才有效,这与DBMS提供的无需特殊处理的锁相反。

    希望这有帮助。

答案 1 :(得分:3)

  

假设我在Java中使用Oracle,我是否在JDBC中有任何方法可以帮助我做到这一点?

This Oracle paper应该为您提供有关如何执行此操作的一些提示。

没有特定的JDBC方法。相反,您可以通过设计SQL查询/更新的方式以及放置事务边界的位置来实现乐观锁定。