【发布时间】:2013-10-23 21:25:34
【问题描述】:
虽然我已经能够找到有关 Hibernate 事务如何工作的信息,因此数据库没有损坏,但很难理解 Hibernate 如何处理线程之间共享的对象,并且每个线程都试图将其保存到数据库。
这是我的理论问题:
1) 我有一个带有属性(ssn、姓名、地址)的 Person 对象。 2)三个线程都引用了这个person对象,每个线程调用savePersonToHibernate(...)方法
public void savePersonToHibernate(Person person)
{
...
session.saveOrUpdate(person)
...
}
Hibernate 如何处理 3 个线程将同一个对象写入存储?它是否将所有事务放在一个队列中,所以当第一个线程创建行和标识符(设置 id)时,剩余的两个线程只会更新它(在这种情况下)没有变化?或者我是否真的有机会在数据库中有 2 或 3 行,当前对象仅引用创建的最后一个标识符?
我希望它有点意义...我正在制作一个队列系统,数据需要引用到需要动态创建的类别...如果两个或多个线程获取一些数据两者都需要创建相同的类别,我不想重复。
我希望这是有道理的......你会怎么做?
【问题讨论】: