使用更新语句时的竞争条件

时间:2013-12-17 05:59:47

标签: java mysql sql hibernate race-condition

我有一个使用hibernate的更新语句,它将计数增加一个值。我正在使用的声明就是这个

UPDATE_STMT="UPDATE STATS.PROCESSED SET COUNT = COUNT + ? WHERE ID = ?"

我正在准备声明并以这种方式执行它。以下所有代码均采用transaction/commit/rollback模式。

update = session.connection().prepareStatement(UPDATE_STMT);
update.setLong(1, data.getCounter());
update.setLong(2, data.TransId());
update.execute();

但看起来有竞争条件且数据库没有正确更新。更新是从多个应用程序服务器执行的。我想知道使用上述语句进行更新是否是一种安全的方法,或者是否有更好的方法来处理这种情况。

0 个答案:

没有答案