是否可以为许多用户请求创建持久的悲观锁?
我很想知道是否可以在Java EE中使用Hibernate或PHP使用Doctrine或Propel。我通过使用Doctrine 2尝试了这一点,但这不可能,仅在数据库级别(每个用户请求)。
答案 0 :(得分:3)
这可能,但很多(手动)工作。 Hibernate和J2EE的所有框架都使用过滤器在收到请求时开始会话,并在发送响应时提交它。
所以你需要做的是为你的servlet禁用这个过滤器,使用工厂创建Hibernate会话,把它放到用户的HTTP会话中,然后使用那个H. session来完成你的工作。
请注意,没有安全的方法来结束此类会话,因为用户可以在几个小时内停止使用浏览器。
可能更有用和稳定的东西是“临时”对象:当用户进行更改时,将临时对象保存到数据库中,该对象遮蔽“真实”对象。这允许您立即保存任何更改。当用户对结果感到满意时,他可以单击一个按钮,您可以将临时对象中的数据复制回真实对象(当然还有乐观锁定)。