1

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

我很想看看在 Java EE 中是否可以使用 Hibernate 或 PHP 使用 Doctrine 或 Propel。我通过使用 Doctrine 2 进行了尝试,但这是不可能的,只能在数据库级别(每个用户请求)。

4

1 回答 1

3

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

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

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

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

于 2011-05-31T13:45:49.647 回答