【发布时间】:2017-10-10 05:38:04
【问题描述】:
我有一个 Hybris 系统,在每个数据库表中都有一个名为“hjmpts”的列。该列包含 INT 值。有人知道这个专栏的原因吗?
【问题讨论】:
标签: hybris
我有一个 Hybris 系统,在每个数据库表中都有一个名为“hjmpts”的列。该列包含 INT 值。有人知道这个专栏的原因吗?
【问题讨论】:
标签: hybris
它旨在支持乐观锁定,就像 Hibernate 这样的持久层使用@Version 注解所做的那样。
基本上,当您从数据库中选择一行并返回当前版本时。当行更新时,版本列会增加。当您更新行时,您在查询中使用 WHERE 子句以匹配您选择的版本。如果更新没有修改任何行,那么您知道其他东西同时更新了该行(和版本)。
hjmp.throw.concurrent.modification.exceptions(default false) 是一个配置参数,它启用或禁用在更新时检查项目行是否必须与获取 HJMP 实体对象时读取的版本相同。
这意味着在属性中将 hjmp.throw.concurrent.modification.exceptions 参数设置为 true 会激活乐观锁定,当然会增加看到乐观并发异常的风险,例如 HJMPException(PK 已同时修改 - 预期版本 ...),这将强制事务回滚
P.S:如果不开启乐观锁,只会写入脏属性,最终结果是合并。
【讨论】: