我在Java應用程序中需要某種數據庫抽象。我擁有包含所有屬性和內部應用程序數據的mySQL數據庫,第二個用於結果數據。我需要創建新表並填充它們。棘手的部分是每個應用程序的第二個數據庫可能不同,所以它可以是Oracle DB或PostgreSQL。有誰知道某種工具可以讓我編寫一個版本的SQL,它會將其轉換爲特定的DB方言嗎?休眠或彈簧數據可以幫助我嗎? 謝謝你的答案數據庫抽象
編輯 我需要執行不涉及任何對象查詢,只需創建表與動態生成的名稱
我在Java應用程序中需要某種數據庫抽象。我擁有包含所有屬性和內部應用程序數據的mySQL數據庫,第二個用於結果數據。我需要創建新表並填充它們。棘手的部分是每個應用程序的第二個數據庫可能不同,所以它可以是Oracle DB或PostgreSQL。有誰知道某種工具可以讓我編寫一個版本的SQL,它會將其轉換爲特定的DB方言嗎?休眠或彈簧數據可以幫助我嗎? 謝謝你的答案數據庫抽象
編輯 我需要執行不涉及任何對象查詢,只需創建表與動態生成的名稱
當然Hibernate(或任何其他JPA [1]實現)將幫助你。 JPA是一種API,它允許您將Java bean映射到抽象邏輯中的數據庫錶行,其中甚至可能根本不涉及SQL。
JPA有它自己的JPQL [2](類似於SQL的面向對象的查詢語言),它將轉換爲您正在使用的實際數據庫的特定方言;它有一個Criteria API [3],它可以讓你使用類型安全的方法調用從數據庫中查詢和檢索數據。
當然Hibernate可以幫助你這一點。最好的部分是,你甚至不必編寫SQL查詢(HQL或Criteria將完成你的工作)。唯一的問題是你必須在更改數據庫實例時更改數據庫詳細信息(如驅動程序類,驅動程序和方言等,以建立連接)。
@Wojciech Bugaj你還需要將數據庫複製到不同的數據庫服務器(如備份和恢復)?你想要做什麼確切的操作?多解釋一下,這樣它會更容易回答。 – ashishakp
但我可以創建與任何對象無關的查詢嗎? –
但我可以創建與任何對象無關的查詢嗎? –
是的,您可以使用JPQL來封閉與對象無關的查詢,例如聚合('count','group by'等)。 –
謝謝,這就是我一直在尋找的 –