小编Kir*_*iru的帖子

如何将事务绑定到Hibernate中的多个线程?

最初的代码是在以下结构中,它工作得很好 -

初始代码:

@Transactional
class foo
{
  void public work()
  {
      task1;
      task2;     
  }
}
Run Code Online (Sandbox Code Playgroud)

由于这两个任务可以并行执行,我们重构将它们置于两个线程之下.在不同的线程中编写了两个任务,并行调用它们并在调用相应的DAO时收到以下错误

没有Hibernate会话绑定到线程,配置不允许在这里创建非事务性的

由于hibernate会话绑定到当前线程,因此它会成为子线程的问题.

重构代码:

@Transactional
class foo
{
  void public work()
  {
      final Thread t1 = new Thread(new Job1());
      t1.start();

      final Thread t2 = new Thread(new Job2());
      t2.start();

      t1.join();
      t2.join(); 
  }

  class Job1
  {
     public void run()
     {
        task1;
     }   
  }

 class Job2
  {
     public void run()
     {
        task1;
     }   
  }
Run Code Online (Sandbox Code Playgroud)

}

spring hibernate

2
推荐指数
1
解决办法
2518
查看次数

标签 统计

hibernate ×1

spring ×1