2013-10-31 10 views
0

我有一些一般性的問題。有沒有可能有一個Java程序,與用戶指定的數據庫類型一起工作,讓我們說應用程序的設置。意思是,根據運行應用程序的服務器以及數據庫服務器的類型,應用程序必須調整自身以運行其查詢。
我是否必須爲不同類型的數據庫指定不同的查詢?使用不同關係數據庫的Java程序

+1

是的,這是可能的。爲您希望用戶使用的數據庫添加支持。並根據用戶的選擇直接選擇「數據庫連接器」。 –

回答

2

可能嗎?當然。一般來說,如果您確實需要數據庫獨立性,則可以編寫應用程序,利用獨立於數據庫的框架來處理持久數據並從相關數據庫中檢索數據。例如,Hibernate就知道如何構建針對Oracle的查詢,以及如何生成針對SQL Server,MySQL等執行相同操作的不同查詢。當然,構建完全獨立於數據庫的應用程序引入了其他問題。例如,不同的數據庫以不同的方式處理鎖定 - SQL Server中的一個簡單的SELECT將鎖定一行,而Oracle不會這樣做。這可能會導致您的應用程序根據數據庫的行爲而有所不同。另外,完全獨立於數據庫的應用程序通常不能像利用特定數據庫獨特功能的應用程序那樣進行擴展 - 像Hibernate這樣的框架不會生成針對特定應用程序針對任何特定數據庫最有效的SQL。當然,它會針對每個數據庫生成通常合理的SQL,但知道業務需求和特定數據庫的人員幾乎肯定會做得更好。

+0

我同意賈斯汀。在我看來,除非你有最簡單的應用程序,否則試圖實現數據庫中立是傻瓜的差事。 – OldProgrammer