Hibernate长对话隔离级别

时间:2014-08-01 13:23:30

标签: hibernate

我现在正在学习Hibernate的方式,并且在长时间的会话中会遇到并发性问题。

我有一个带有两个请求 - 响应周期的长对话的Web应用程序。第一个列出了db表中的一些行,以及用户可以提交新行的表单。第二个列出了新添加的行的所有行。

有没有办法为整个长会话会话定义或实现一种方式,使其行为类似于可序列化的事务?

用户故事:

  1. 我们有2个用户使用列出的表格行检查相同的第一页。
  2. 第一个用户将一些数据放入表单并提交,并看到添加了行的新列表。
  3. 第二个用户尝试提交新行,但尝试插入数字已更改的数据集时会遇到某种隔离异常。
  4. 我可以想到将数据集添加到httpsession并在另一方面进行比较的一些解决方法,但我希望有更好的方法。

1 个答案:

答案 0 :(得分:0)

可能不像SERIALIZABLE交易,但您可以使用optimistic locking确保数据完整性。

乐观锁定以及有状态存储(扩展持久化上下文或分离实体)可以为您提供application-level repeatable reads,因此您可以保证多个用户请求的实体状态完整性。

悲观锁定不是您的选择,唯一的解决方法是使用逻辑锁定策略,这就是为什么乐观锁定是多个请求的最佳选择。