2013-02-28 140 views
0

在我的應用程序中,我有一個DAO bean,我通過Spring注入了一個Hibernate sessionFactory(配置了c3p0連接池)。我的sessionFactory bean定義如下:Hibernate DAO/SessionFactory使用

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
... 
</bean> 

什麼是在線程環境中使用包裝DAO bean的最佳實踐和/或最佳性能?我應該將它定義爲單例bean,並讓它在線程之間共享,同時依賴sessionFactory的線程安全性?或者我應該爲每個線程創建一個單獨的DAO實例?它甚至重要嗎?

回答

3

如果您的DAO沒有SessionFactory以外的任何成員字段,請將每個字段用作傳遞給所有線程的單例。

Spring的一個常見做法是將您的DAO實現用@Repository@Autowired註釋到您的服務或其他需要使用它的類中。

SessionFactory#openSession()SessionFactory#getCurrentSession()分別返回一個新的Session實例和一個線程本地Session,所以沒有任何內容跨線程共享。