我现在正在学习Hibernate的方式,并且在长时间的会话中会遇到并发性问题。
我有一个带有两个请求 - 响应周期的长对话的Web应用程序。第一个列出了db表中的一些行,以及用户可以提交新行的表单。第二个列出了新添加的行的所有行。
有没有办法为整个长会话会话定义或实现一种方式,使其行为类似于可序列化的事务?
用户故事:
我可以想到将数据集添加到httpsession并在另一方面进行比较的一些解决方法,但我希望有更好的方法。
答案 0 :(得分:0)
可能不像SERIALIZABLE交易,但您可以使用optimistic locking确保数据完整性。
乐观锁定以及有状态存储(扩展持久化上下文或分离实体)可以为您提供application-level repeatable reads,因此您可以保证多个用户请求的实体状态完整性。
悲观锁定不是您的选择,唯一的解决方法是使用逻辑锁定策略,这就是为什么乐观锁定是多个请求的最佳选择。