我有一个Hybris系统,在每个数据库表中都有一个名为“hjmpts”的列。该列包含INT值。有人知道这个专栏的原因吗?
答案 0 :(得分:5)
它的意思是支持乐观锁定,就像Hibernate使用@Version
注释这样的持久层一样。
基本上,当您从数据库中选择一行并返回当前版本时。更新行时,版本列会递增。更新行时,在查询上使用WHERE子句以匹配您选择的版本。如果更新没有修改任何行,那么您知道其他时候已经更新了行(和版本)。
hjmp.throw.concurrent.modification.exceptions
(默认为false)是配置参数,可以启用或禁用检查更新时项目行必须具有与获取HJMP实体对象时读取的版本相同的版本。
这意味着在属性中将hjmp.throw.concurrent.modification.exceptions
参数设置为true
会激活乐观锁定,当然会增加看到乐观并发异常的风险,例如HJMPException(PK被同时修改 - 预期版本......),这将强制进行事务回滚
P.S:如果你没有启用乐观锁定,只会写入脏属性,最终结果将是合并。