2011-05-31 50 views
1

是否可以创建持续许多用户请求的悲观锁定?许多用户请求的悲观锁定

我很感兴趣,看看是否有可能在Java EE中使用Hibernate或PHP使用Doctrine或Propel。我通过使用Doctrine 2尝试了这一点,但仅在数据库级别(每个用户请求)它不可能。

回答

3

这是可能的,但很多(手动)的工作。 Hibernate和J2EE的所有框架都使用过滤器在收到请求时开始会话,并在发送响应时进行提交。

因此,您需要做的是为您的servlet禁用此过滤器,使用工厂创建Hibernate会话,将其放入用户的HTTP会话中,然后使用该会话进行工作。

请注意,没有安全的方式来结束这样的会话,因为用户可以简单地停止使用浏览器几个小时。

一些可能更加有用和稳定的东西是“临时”对象:当用户进行更改时,将临时对象保存到数据库中,以遮蔽“真实”对象。这使您可以立即保存任何更改。当用户对结果满意时,他可以单击一个按钮,并且可以将临时对象中的数据复制回真实的对象(当然,乐观锁定)。