虽然我已经找到了有关Hibernate事务如何工作以避免数据库损坏的信息,但是理解Hibernate如何处理在多个线程之间共享的对象,并且每个线程都尝试将其保存到数据库中的对象却更为困难。
这是我的理论问题:
1)我有一个人员对象,带有属性(ssn,姓名,地址)。 2)三个线程引用此人员对象,每个线程调用savePersonToHibernate(...)方法。
public void savePersonToHibernate(Person person)
{
...
session.saveOrUpdate(person)
...
}
Hibernate在处理三个线程同时向存储中写入同一对象时,会如何应对?它会将所有事务放入队列中,因此当第一个线程创建行和标识符(设置ID)时,剩余的两个线程只会进行更新(在这种情况下没有更改)吗?还是说我实际上有可能在数据库中有2或3行,而当前对象只引用最后创建的标识符?
我希望这有些意义...我正在制作一个队列系统,数据需要参考需要即时创建的类别...如果两个或多个线程获取一些数据,它们都需要创建相同的类别,我不想重复。
希望这有些意义...你会怎么做?