「每天一道面試題」Hibernate中SessionFactory是否線程安全?

「每天一道面試題」Hibernate中SessionFactory是否線程安全?

SessionFactory對應Hibernate的一個數據存儲的概念,它是線程安全的,可以被多個線程併發訪問。SessionFactory一般只會在啟動的時候構建。對於應用程序,最好將SessionFactory通過單例模式進行封裝以便於訪問。然而,Session是非線程安全的對象,多線程間不能共享,它表示一個與數據庫進行交互的工作單元。Session是由SessionFactory創建的,在任務完成之後需要把它關閉。Session是持久層對外服務提供的主要接口,應該在需要的時候才創建。為了避免創建太多的session,可以使用ThreadLocal將session和當前線程綁定在一起,這樣可以讓同一個線程獲得的總是同一個session。在Hibernate3版本實現中SessionFactory的getCurrentSession()方法可以讓同一個線程獲得的總是同一個session。


分享到:


相關文章: