2013-01-04 20 views
0

在開發連接到數據庫的Java應用程序,好像我們有兩個選擇:的java.sql VS mysql.jdbc

  • 使用標準java.sql
  • 使用供應商特定的類(比如我們有com.mysql.jdbc.Connection,我們也有java.sql.Connection)。

哪一個是推薦使用的?說我目前正在使用MySQL。但是將來我可能會轉向oracle。使用供應商特定實施有沒有任何性能獎勵?

+0

使用JDBC,您總是'使用'供應商實現,因爲JDBC只是一組接口。這就是說:爲了獲得最佳的可移植性,通常只使用'java.sql'和'javax.sql'中定義的接口。 –

回答

2

在大多數情況下,您不會注意到性能差異。

java.sql包代表不同數據庫之間最常見的分母,而特定於供應商的軟件包也暴露了數據庫後端獨有的一些功能。但是,如果您希望稍後打開該選項以便切換數據庫後端,則應該避免使用這些選項,因爲新數據庫可能沒有相應的功能,您需要以完全不同的方式解決問題,這可能會導致最終需要對整個應用程序進行大規模的重構。

tl; dr:如果要保持打開選項以切換到Oracle或任何其他SQL數據庫,請使用java.sql。

甚至更​​好:使用像Hibernate這樣的對象關係映射框架爲您執行數據庫抽象。他們需要一段時間才能習慣,但之後您將能夠以較少的工時來實現數據庫功能,並且在配置文件中切換數據庫後端將是一個單行更改。

2

永遠不要找供應商特定的代碼,總是使用標準api(JDBC),稍後它將很容易維護,並且可以輕鬆跨數據庫移植。供應商特定代碼的性能優勢可以忽略不計,您可以通過優化查詢,索引,緩存等方式做得更好。

+0

我同意。我一直在項目團隊假定只有數據庫x將被使用。稍後,添加另一個數據庫y,開發人員必須刪除所有數據庫x代碼或爲數據庫y編寫另一個接口。 –

相關問題