我有一个经典场景:对同一记录的两次更新基于此记录中先前就绪的值。 我在乐观并发的假设下工作。我自己实现条件更新并不难 - 问题是我是否可以依赖驱动程序中的某个API或者为我处理它的数据库?
当然,我用Google搜索了它,但我似乎想出的只是解释了什么是乐观并发,而没有提到代码示例......
我正在使用JDBC数据直接驱动程序。
谢谢!
答案 0 :(得分:3)
不,JDBC对乐观并发没有任何支持。 JPA通过对表使用专用version
列来处理乐观并发,并在每次更新时递增版本值。更新查询如下所示:
update foo set ..., version = version + 1
where id = :theId and version = :theVersionLoadedInMemory
如果executeUpdate()
返回0而不是1,则表示其他人删除了记录,或更新了记录,从而增加了版本。