2010-04-15 96 views
0

Web應用程序在Tomcat上運行。數據源配置爲Spring配置, 由Hibernate使用。適用於Tomcat Web應用程序,Spring和Hibernate的DataSource

如果我們不能使用JNDI,你會建議用什麼作爲DataSource?

org.springframework.jdbc.datasource.DriverManagerDataSource會好嗎? 這不是很好,但真誠地說,它可以在生產服務器上使用,對吧? 只是有點頭痛,頻繁的連接重新打開。

另外,我們可以使用Apache的BasicDataSource。 這當然好多了,但這是一個問題。如果我們不使用JNDI,則:

如果應用程序的每個實例都將創建自己的DataSource副本,並且每個DataSource可以有5個打開的連接,我們會得到什麼?
Num_of_running_apps * Num_of_max_active_connections =此用戶的數據庫上的最大活動打開連接數?



第二個問題:從休眠的角度來看,是有關於使用什麼數據源的實現有什麼區別?無論數據源是完美的還是穩定的,它都可以工作嗎?

+0

只是爲了檢查 - 爲什麼你不能使用JNDI? – 2010-04-15 12:23:43

+0

@Dick Chesterwood那麼,因爲我沒有訪問tomcat,管理員可能沒有足夠的資格來正確安裝它。至少他們在basicdatasource方面存在問題。 Tomcat發誓他們 – EugeneP 2010-04-18 10:43:56

回答

2

如果我們不能使用JNDI,你會建議用什麼作爲DataSource?

當然,在生產不org.springframework.jdbc.datasource.DriverManagerDataSource,這個類是不寫在javadoc的連接池:

注:這個類不是一個實際的連接池;它實際上不會連接連接。它只是簡單地替代全連接池,實現相同的標準接口,但在每次調用時創建新的連接。

對於J2EE容器以外的測試或獨立環境非常有用,可以作爲相應ApplicationContext中的DataSource bean,也可以與簡單的JNDI環境結合使用。池 - 假設Connection.close()調用將簡單地關閉連接,所以任何支持DataSource的持久性代碼都應該可以工作。

使用獨立連接池,如C3P0DBPC。就我個人而言,我會選擇C3P0,因爲它比DBCP表現得更好。請在Spring論壇上查看c3p0 vs. dbcp,並在SO上查看此previous question

如果應用程序的每個實例都會創建自己的DataSource副本,並且每個DataSource都可以有5個打開的連接,我們會得到什麼?連接

總#=應用×5

由Hibernate的角度來看的實例#,是否有關於使用什麼數據源的實現有什麼區別?

沒有區別。 Hibernate將使用它從Spring獲得的連接。