2013-03-04 112 views
3

我正在學習JDBC,我目前正在研究JDBC數據源和連接池。您是否需要確保您創建的數據源只在應用程序中創建一次,然後與需要引用數據源的所有類共享?或者它在幕後做了些神奇的事情?JDBC連接池是單身人士嗎?

如果您在Java EE服務器或Spring中配置數據源,它是否只創建一個數據源對象? JNDI中的對象是單例還是每次都需要一個新的對象?

回答

2

DataSource實例並不神奇。如果您創建了其中兩個,那麼您將擁有兩個,並且每個都將擁有自己的連接池。使用JNDI,您可以在名稱下注冊一個對象,因此根據定義,每次都會發布相同的對象。你可以認爲它或多或少是誇大的HashMap。在Spring中,singleton是默認的作用域,因此除非您更改bean的作用域,否則將在使用它的所有內容之間創建並共享一個DataSource

+0

好的,所以所有的JNDI對象都是單例...顯然是因爲你寫了'new'關鍵字然後綁定它,對吧? – LuckyLuke 2013-03-04 18:01:24

+0

是的,儘管你也可以在JNDI中使用[ObjectFactory](http://docs.oracle.com/javase/7/docs/api/javax/naming/spi/ObjectFactory.html)實現一些間接性,這可能是如果它不作爲單例處理,則返回不同的實例,例如[Tomcat的配置](http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Resource_Definitions)中可能的例子。 – 2013-03-04 18:15:25