2012-03-24 72 views
-1

只是想問一下,我看過一些代碼,其中Hibernate會話對象被Spring管理爲自動連接它作爲SINGLETON bean。這是不錯的做法嗎?該對象將以多用戶環境的類型共享或不是更好地將其聲明爲代理?Hibernate由Spring管理

+0

你可以顯示一些例子,其中會話連線爲單例,或者你與會話工廠混淆 – 2012-03-24 06:53:22

回答

0

會話不應該是SINGLETON bean,它不應該跨應用程序共享。在多用戶環境中,每個用戶都應該有自己的會話實例。一種廣泛使用的方法是在請求啓動時打開會話,並在請求完成時關閉會話。 Spring通過提供OpenSessionInViewFilter來簡化這種方法。如果您配置了此過濾器,Spring將處理會話生命週期,您只需使用SessionFactoryUtils.getSession()方法訪問它。如果您使用Spring 3.1和Hibernate 4.x,則可以使用sessionFactory.getCurrentSession()訪問會話。

相關問題