2012-01-01 58 views
6

我知道什么是乐观锁定和悲观锁定,但是当您编写java代码时,您是如何做到的?假设我在Java中使用Oracle,我有JDBC中的任何方法可以帮助我做到这一点吗?我将如何配置这件事?任何指针将不胜感激。如何从java代码编写乐观和悲观锁定

+0

Java锁定和JDBC在您所查找的方式中无关。你试图解决什么问题? Java锁是可以通过使用“同步”关键字获得的重入锁。 那么,你到底在找什么? – Pavan 2012-01-01 06:47:45

+0

我正在寻找数据库锁定 – user2434 2012-01-01 07:42:58

回答

3

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

This Oracle paper应为您提供关于如何做到这一点的一些技巧。

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

11

您可以在这样的数据库表实现乐观锁(这是锁定多么乐观在Hibernate中完成):

  1. 添加整数“版本”列到你的餐桌。
  2. 每次更新相应行时增加此列的值。
  3. 要获得锁定,只需读取该行的“版本”值即可。
  4. 将“version = obtain_version”条件添加到更新语句的 的where子句中。验证更新后受影响的行数。 如果没有行受到影响 - 某人已经修改了您的条目。

你的更新应该像

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

当然,如果各方遵循它,相反,需要特殊的处理DBMS提供的锁这个机制只。

希望这会有所帮助。