我知道乐观锁和悲观锁是什么,但是当你写一个java代码时你是怎么做的呢?假设我在 Java 中使用 Oracle,我在 JDBC 中是否有任何方法可以帮助我做到这一点?我将如何配置这个东西?任何指针将不胜感激。
问问题
14833 次
2 回答
15
您可以通过这种方式在您的 DB 表中实现乐观锁(这是在 Hibernate 中完成乐观锁的方式):
- 将整数“版本”列添加到您的表中。
- 随着相应行的每次更新,增加该列的值。
- 要获得锁,只需读取行的“版本”值。
- 在更新语句的 where 子句中添加“版本 = 获得版本”条件。更新后验证受影响的行数。如果没有行受到影响 - 有人已经修改了您的条目。
您的更新应如下所示
UPDATE mytable SET name = 'Andy', version = 3 WHERE id = 1 and version = 2
当然,这种机制只有在各方都遵循它的情况下才有效,这与 DBMS 提供的不需要特殊处理的锁相反。
希望这可以帮助。
于 2012-01-16T13:46:55.630 回答
3
假设我在 Java 中使用 Oracle,我在 JDBC 中是否有任何方法可以帮助我做到这一点?
这篇 Oracle 论文应该为您提供一些有关如何执行此操作的提示。
没有特定的 JDBC 方法。相反,您可以通过设计 SQL 查询/更新以及放置事务边界的位置来实现乐观锁定。
于 2012-01-01T06:52:21.947 回答