java - 使用线程的 Hibernate session 和事务

标签 java multithreading hibernate session-variables

我正在从事一个使用 Hibernate3 和 JDBC 与我们的数据库 (MSSQL 2008) 连接/交互的项目

目前,我们在主类中创建 session 工厂,然后开始我们的事务,然后我们启动一个新线程,该线程创建连接等等。我会看看我是否可以用一些伪代码来说明这一点......

public static main(String[] args){
    for(...){
        SessionFactory sf = new SessionFactory();
        sf.getCurrentSession.beginTransaction();
        CreateNewThreadedObject.run();
        sf.getCurrentSession.getTransaction.commit();
    }
}

我的问题是,这样安全吗?我知道 session 不是线程安全的,但我并没有真正在线程中使用 session 。如果有的话,我正在使用交易。将 session 工厂传递给线程对象会更好吗?任何建议表示赞赏!

最佳答案

了解 Hibernate session 和线程关联非常重要,最好在此处进行解释:

http://community.jboss.org/wiki/Sessionsandtransactions

如果您使用的是 Web 应用程序,我强烈建议您使用 Open Session in View 模式:

https://community.jboss.org/wiki/OpenSessionInView

关于java - 使用线程的 Hibernate session 和事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4684880/

相关文章:

java - 获取应用程序关闭的时间。如何?

java - Java中的Write语句读取两个整数并显示它们之间的偶数

java - 平均分配时间表

c++ - Qt 在构建移动到线程的 QObject 时将 "this"作为父级传递

objective-c - 信号量等待导致 AFNetworking 阻塞?

java - 如何创建选择查询来获取树结构数据库表中任何特定节点的所有子节点

python - 当由 C++ 线程程序调用的 Python 脚本本身调用时,OpenCV 函数会锁定

java - 如何在 Hibernate 中将相关对象更改为另一个对象?

java - 有没有办法使用 "GREATEST(field1, field2)"进行 SELECT,其中 field1 和 field2 是同一选择中的聚合和?

hibernate - BeginTransaction Hibernate有必要吗?