2017-02-06 63 views
-1

我在Java應用程序中需要某種數據庫抽象。我擁有包含所有屬性和內部應用程序數據的mySQL數據庫,第二個用於結果數據。我需要創建新表並填充它們。棘手的部分是每個應用程序的第二個數據庫可能不同,所以它可以是Oracle DB或PostgreSQL。有誰知道某種工具可以讓我編寫一個版本的SQL,它會將其轉換爲特定的DB方言嗎?休眠或彈簧數據可以幫助我嗎? 謝謝你的答案數據庫抽象

編輯 我需要執行不涉及任何對象查詢,只需創建表與動態生成的名稱

回答

-1

當然Hibernate(或任何其他JPA [1]實現)將幫助你。 JPA是一種API,它允許您將Java bean映射到抽象邏輯中的數據庫錶行,其中甚至可能根本不涉及SQL。

JPA有它自己的JPQL [2](類似於SQL的面向對象的查詢語言),它將轉換爲您正在使用的實際數據庫的特定方言;它有一個Criteria API [3],它可以讓你使用類型安全的方法調用從數據庫中查詢和檢索數據。

  1. https://en.wikibooks.org/wiki/Java_Persistence/What_is_JPA%3F
  2. https://en.wikipedia.org/wiki/Java_Persistence_Query_Language
  3. https://en.wikibooks.org/wiki/Java_Persistence/Criteria
+0

但我可以創建與任何對象無關的查詢嗎? –

+0

是的,您可以使用JPQL來封閉與對象無關的查詢,例如聚合('count','group by'等)。 –

+0

謝謝,這就是我一直在尋找的 –

-1

當然Hibernate可以幫助你這一點。最好的部分是,你甚至不必編寫SQL查詢(HQL或Criteria將完成你的工作)。唯一的問題是你必須在更改數據庫實例時更改數據庫詳細信息(如驅動程序類,驅動程序和方言等,以建立連接)。

+0

@Wojciech Bugaj你還需要將數據庫複製到不同的數據庫服務器(如備份和恢復)?你想要做什麼確切的操作?多解釋一下,這樣它會更容易回答。 – ashishakp

+0

但我可以創建與任何對象無關的查詢嗎? –