2013-03-03 120 views
7

我在閱讀關於Java中的連接和數據源,我有一些問題。數據源真的只是一個管理者和一個連接(或多個連接)的抽象嗎?連接vs數據源

回答

9

docs

該工廠用於提供物理數據源,此DataSource對象所表示的連接。作爲DriverManager工具的替代方案,DataSource對象是獲取連接的首選方法。

實際上,一個DataSourceConnection秒的供應商和它具有多種,其以不同的方式操作的實現。如:

  1. 基本實現 - 生成標準的Connection對象

  2. 連接池實現 - 生成一個Connection對象,它會自動地參與連接池。這個 實現與中間層連接池管理器一起工作。

  3. 分佈式事務實現 - 生成可用於分佈式事務的Connection對象,並且幾乎總是參與連接池。此實現與 中級事務管理器一起使用,並且幾乎總是與連接管理器 連接。

-1

數據源是您的數據源,連接是驅動程序。

2

連接是連接:) DataSource是連接管理器(連接池)。

+0

我不確定這個答案是否100%準確無誤。 – 2016-09-10 08:04:43

-1

數據源是患病的概念在現有的形式,就好像它是爲了抽象的互動不應該返回一些SQL連接與在第一時間進行互動。 XA也是一種幻想概念,有些人因爲在世界上缺乏可靠的實現而付出了沉重的代價(我的意思是所有的企業商業實施者都只是失敗並且暴露了業務......有人因爲金融而受到傷害,但我不會提及名)。一般情況下,無論Sun或Oracle是否推薦它,它都會導致代碼中出現過度工程和一些技術污染(處理上下文,額外的步驟來獲取數據,一些外部配置......並且最終它仍然是特定於無論如何廠商實現)。一些開發的基於簡單連接和DriverManager的開發基於解決方案的連接恢復e.t.c比基於企業DBMS供應商提供的DataSource實現更好。

爲了記錄我與我一起工作,我基於在不同地方遇到的事實。如果你懷疑它,那麼問爲什麼你可以在整個企業中的Hibernate配置中看到簡單的JDBC URL。許多人只是簡單地轉載J2EE的重量級思想,然後使用基於DriverManager的普通連接進行輕量級設計。

您想讓自己的職業生涯在線,然後繼續使用XA DataSources並恢復失敗的事務,其中糟糕的XA實施失敗嚴重。