2010-03-01 65 views
4

我一直在研究連接池選項,並且我對Tomcat JNDI連接池方法的差異有些不清楚,與Spring/Hibernate相比解決方案相同。基於Tomcat JNDI和基於Spring/Hibernate DS的連接池有什麼區別

雖然可以使用1,2來實現池化,但是我們使用Tomcat的具體應用會給我們帶來更好的效果,因爲我們有限制條件。

讀一下,有一些建議到just stick with Spring/Hibernate

每種方法之間是否有值得一提的值得注意的區別?什麼是其他人的個人經驗(或兩者兼有) - 我已經成功地使用Spring/Hibernate多年了。

+0

我可能是錯的,但我認爲,如果您使用JNDI連接池,它將在容器範圍內(例如,在幾個Web應用程序之間共享)。如果您在Spring上下文中定義連接池,它將在您的上下文中(例如它將在應用程序範圍內)離開。我沒有使用Tomcat + JNDI選項,所以我不能給出真正的好建議。 – 2010-03-01 21:28:38

回答

3

這兩種方法是互補的,不是相互排斥的。在生產系統中,類似Spring/Hibernate的應用服務器會以javax.sql.DataSource的形式獲取對連接池的引用,通常通過在JNDI樹上查找。它通常被認爲是管理連接池及其連接的應用服務器的「工作」。請記住,JNDI只是一個註冊對象進行共享的地方,它本身就要求任何給定的連接池機制。應用程序服務器創建並配置池,應用程序(通過Spring/Hibernate /其他)使用它。

但是,應用程序自己配置和管理連接池也同樣有效。這對於應用程序來說確實意味着更多的工作,但對應用程序服務器的依賴較少。

+0

夠公平的,這是有道理的。現在假設我使用基於Tomcat的JNDI Pooling,我假設我需要關閉Spring中的池化配置,以便不在Tomcat的JNDI池中進行池化......? – 2010-03-01 23:00:21

+1

Spring沒有連接池實現,它使用任何你給它的'DataSource'對象 - 如果這恰好是Tomcat通過JNDI提供的連接池,那麼更好。 – skaffman 2010-03-01 23:53:16

+0

真的,對不起我的意思是休眠 – 2010-03-02 00:18:47

相關問題