【发布时间】:2020-02-11 12:19:02
【问题描述】:
我读过 Martin Fowler 的书籍章节Optimistic Offline Lock
作者描述了以下示例(如果我理解正确的话):
有 2 个实体:Order 和 Client。涉及两笔交易(业务):
第一笔交易计算订单的税额。税额取决于订单点和客户地址
第二次事务更新客户端地址
这里的问题是,如果client地址发生变化,而order的税额计算结果可能不一致。作者提供了 2 个基于乐观离线锁定的解决方案。其中之一是在事务开始时检查order 和client 版本,并在事务结束时检查order 和client 版本。但是这里作者警告说,我们必须使用REPEATABLE READ 或更高的隔离级别才能第二次读取版本。这是我提出问题的原因。据我了解,如果我第二次读取任何行,我将得到相同的结果,因为在使用此隔离级别时,数据库会锁定我们之前读取的所有行。
请解释一下作者的想法。
【问题讨论】:
标签: java hibernate isolation-level optimistic-locking transaction-isolation