【发布时间】:2011-06-08 18:21:36
【问题描述】:
我正在开发一个使用 Hibernate3 和 JDBC 与我们的数据库连接/交互的项目 (MSSQL 2008)
目前我们在主类中创建会话工厂,然后开始我们的事务,然后我们启动一个新线程,该线程创建连接等等。我会看看我是否可以用一些伪代码来说明这一点......
public static main(String[] args){
for(...){
SessionFactory sf = new SessionFactory();
sf.getCurrentSession.beginTransaction();
CreateNewThreadedObject.run();
sf.getCurrentSession.getTransaction.commit();
}
}
我的问题是,这安全吗?我知道会话不是线程安全的,但我并没有真正在线程中使用会话。如果有什么我正在使用交易。将 sessionfactory 传递给线程对象会更好吗?任何建议表示赞赏!
【问题讨论】:
-
如果您在衍生线程中使用事务(以便线程执行的操作可以是在 main 中启动的事务的一部分),那么这可能会失败,因为主事务可以在衍生线程之前提交它完成其工作单元
标签: java multithreading hibernate session-variables