如何在多线程应用程序中使用休眠?
我正在尝试将Hibernate用于多线程应用程序,其中每个线程检索一个对象并尝试将其插入到表中。我的代码如下所示。我每个线程都有本地休眠会话对象,在每个InsertData中,我都会开始事务和提交。
我面临的问题是,很多时候我得到“org.hibernate.TransactionException:不支持嵌套事务”
由于我是休眠的新手,我不知道我正在做的事情是否正确?请让我知道在多线程应用程序中使用休眠的正确方法是什么,以及如何避免上述异常。
谢谢
public class Worker extends Thread {
private Session session = null;
Worker() {
SessionFactory sf = HibernateUtil.getSessionFactory(); // Singleton
session = sf.openSession();
session.setFlushMode(FlushMode.ALWAYS);
}
public void run() {
// Some loop which will run thousand of times
for (....)
{
InsertData(b);
}
session.close();
}
// BlogPost Table has (pk = id AutoGenerated), dateTime, blogdescription etc.
private void InsertData(BlogPost b) {
session.beginTransaction();
Long id = (Long) session.save(b);
b.setId(id);
session.getTransaction().commit();
}
}
我的休眠配置文件具有和c3p0.min_size=10
c3p0.max_size=20