【发布时间】:2016-12-26 09:43:17
【问题描述】:
我们已经实现了一个multi threaded 应用程序来更新数据库中表的列
即,用户帐户余额。 hibernate 用于将我们的应用程序与数据库进行交互。该应用程序部署在多个服务器中,并将作为一个集群工作。
假设发送多个请求以更新数据库中的同一用户帐户。我们该如何处理这种情况?来自多个服务器的请求或来自同一服务器的不同线程将尝试同时更新它。如何保证操作的原子性。我们可以通过使用hibernate或spring框架的数据库表或行级锁来做同样的事情吗
示例:
来自server S1 的thread A 和来自server S2 的thread B 在同时访问同一个record R。
首先将thread A 从server S1 更新为R 的值R1 和commit transaction。
同时thread B从server S2更新R的值到R2和committransaction。
这种情况的结果是什么?我们必须锁定其中一项交易以获得正确的结果?我们如何锁定事务,因为它来自不同的服务器?
【问题讨论】:
-
如果没有 hibernate 或 spring,你将如何处理它?请张贴您目前所研究的内容,因为当前表格中的问题非常广泛,恐怕您不会得到准确的答案。
标签: java spring multithreading hibernate