0

考虑一个场景 2 应用程序访问/更新单个数据库。其中一个应用程序正在使用休眠并从数据库中获取了一些记录,现在将处理它们并将其保存回来。但在保存之前,同一组记录会被另一个应用程序更新。在这种情况下会发生什么?hibernate 会在保存时抛出错误吗?或休眠将有智能同步更新的记录?

4

1 回答 1

1

hibernate 会抛出StaleObjectException. 这就是为什么

Hibernate 使用乐观锁来处理数据库并发。StaleObjectException如果要更新的数据在当前事务提交更改之前被另一个事务修改,则抛出A。

编辑:

hibernate如何识别内存中对象的状态是陈旧的?

Hibernate 使用版本字段来跟踪对实体的更改。此版本字段在每次提交时更新。现在,如果提交之前的版本号与在事务开始时读取实体时的版本号不匹配,StaleObjectException则抛出。

于 2012-05-16T09:50:52.903 回答