Hibernate - 如何限制多个用户对记录的并发读取?

use*_*784 9 hibernate locking

我们正在使用Hibernate 3.6.0.我们要求从表中检索下一个可用记录.我们如何控制多个并发用户检索相同记录.我们需要读取下一个可用记录并更新列上的状态(锁类型)以避免下一个用户检索相同的记录.我们在表上添加了Version列(乐观锁),但它似乎控制了更新.

Hibernate实现这一目标的最佳解决方案是什么?

提前致谢.Venkat

Tom*_*icz 2

您是否尝试过锁定有问题的记录?Hibernate支持悲观锁(SELECT FOR UPDATE),看文档

您也可以尝试乐观锁定,这取决于您期望的并发级别。

  • 也许,如果悲观锁定和乐观锁定都不适合您(顺便说一句,不要使用时间戳作为版本列),请尝试不同的方法?例如提前读取100条记录,并将每条记录作为一个任务放入JMS队列中。然后每个客户端从队列中选取一条记录并对其进行处理。没有重复、持久性和交易也可用。而且这个解决方案完全独立于你的持久层。 (2认同)