回答
我讀過某個地方,當會話刷新或提交事務時,會話本身由Hibernate關閉。
一個flush
不不關閉會話。然而,從休眠3.1開始,一個commit
會,如果你配置current_session_context_class
關閉會話爲「thread
」或「jta
」,或者,如果您使用的是TransactionManagerLookup
(強制JTA)和getCurrentSession()
。
下面的代碼說明了這一(與current_session_context_class
設置爲thead
這裏):
Session session = factory.getCurrentSession();
Transaction tx = session.beginTransaction();
Product p = new Product();
session.persist(p);
session.flush();
System.out.println(session.isOpen()); // prints true
p.setName("foo");
session.merge(p);
tx.commit();
System.out.println(session.isOpen()); // prints false
參見this threa d和用於在此背景下的文檔中的部分2.5. Contextual sessions。
那麼,我怎麼能重用一個Hibernate會話,在同一個線程,以前已關閉?
或者使用內置的「managed
」戰略(設置current_session_context_class
屬性managed
)或使用自定義CurrentSessionContext
源自ThreadLocalSessionContext
,並覆蓋ThreadLocalSessionContet.isAutoCloseEnabled()
。
再次,看到上面的鏈接,也What about the extended Session pattern for long Conversations?
錯了。會議保持開放,只是一個新的交易開始。最主要的是當前連接到會話STAY的所有對象,因此如果你沒有清除會話,那麼你在這裏有內存泄漏。
並非總是如此 – 2010-05-08 12:27:58
- 1. Hibernate的會話與線程
- 2. Spring + Hibernate + Envers +多線程 - 會話關閉
- 3. 沒有Hibernate會話綁定到通用Hibernate-dao庫的線程
- 4. 如何使用線程上下文重新初始化Hibernate中的會話?
- 5. 在Hibernate和MySQL的等待線程中處理Grails會話InnoDB
- 6. 在HIbernate的web項目中關閉對方會話的線程
- 7. 在spring-hibernate項目中找不到當前線程的會話
- 8. Spring + Hibernate的:無會話中發現當前線程的
- 9. 在石英中使用Hibernate會話
- 10. 每個請求的Hibernate會話與每個應用程序的Hibernate會話?
- 11. 在多線程/線程池中訪問asp.net會話線程
- 12. 會話Bean中的線程
- 13. 如何在Web應用程序中使用託管Hibernate會話
- 14. 在Swing應用程序中使用Hibernate的會話管理
- 15. 會話和線程
- 16. 調用Hibernate會話刷新
- 17. Spring/Hibernate:爲線程保持會話打開,還是打開一個新線程?
- 18. 跨多線程的Spring + Hibernate會話管理
- 19. Hibernate 4:org.hibernate.HibernateException:找不到當前線程的會話
- 20. Spring + Hibernate with annotations:沒有休眠會話綁定到線程
- 21. Java - Spring,Hibernate:沒有會話綁定到線程
- 22. 從Hibernate獲得一個後臺線程的新會話
- 23. 事務問題:沒有Hibernate會話綁定到線程
- 24. Spring&Hibernate:沒有綁定到線程的會話
- 25. java.lang.IllegalStateException:沒有Hibernate會話綁定到線程
- 26. Spring-Hibernate - 找不到當前線程的會話
- 27. AppFuse - Spring Hibernate - 找不到當前線程的會話
- 28. 會話作用域bean工作在會話線程之外
- 29. 你能在java中每個線程只有一個hibernate會話嗎?
- 30. Hibernate會話保存
將回滾也關閉會話如果current_session_context_class到「線程」或「JTA」? – 2017-01-23 16:22:22