2008-11-14 46 views
5

有誰知道一個Java庫,提供了一個有用的抽象分析和操縱任意關係數據庫模式?我在想的東西,可能不喜歡是否有Java的數據庫建模庫?

LibraryClass dbLib = ...; 
DbSchema schema = dbLib.getSchema("my_schema"); 
List<DbTable> tables = schema.getTables(); 

事情
DbTable myTable = ... 
for(DbColumn col : myTable.getColumns()){ 
    ... = col.getType(); 
} 

甚至操縱像

myTable.addColumn(
    new DbColumn("my_new_column", Type.UNSIGNED_INTEGER); 
); 

DbColumn myColumn = ... 
myTable.removeColumn(myColumn); 

大多數數據庫建模工具表將在內部有這樣一個抽象的,但有沒有一種我可以使用的Java,還是我必須推出自己的?

回答

4

DdlUtils有你在找什麼。您可以從XML(以Torque格式)或實時數據庫讀取/寫入模式,甚至可以在純Java中定義數據庫模式。更好的是,閱讀在線doco,這很好。

0

我多年沒有使用它,但Hibernate在構建時曾經有過tools for manipulating data models。如果您針對多個數據庫供應商,Hibernate也具有概念方言,這將有所幫助。

+0

據我所知,Hibernate只包含一個從現有映射文件生成DDL的工具。這不幸的是不會對我的情況有所幫助。這是你的意思,還是有別的? 謝謝! – Henning 2008-11-14 14:19:41

5

JDBC本身具有這樣的抽象。看看java.sql.DatabaseMetaData。但是,這是標準的可選部分,它取決於您使用的JDBC驅動程序,不管它是否實現。

+0

我正在使用MySQL Connector 3.1.10,它實現了java.sql.DatabaseMetaData。就收集和顯示錶格信息而言,這將非常有幫助。謝謝! – Henning 2008-11-14 14:24:11

0

當我在MetaMatrix中時,我們使用EMF(Eclipse建模框架)構建了一個這樣的事物,我們在UML中創建了一個表示元模型,然後從代碼生成它。關於元模型的好處是,如果你做得很好,你可以在元模型之間進行交互操作,前提是你已經對元元模型做出了很好的選擇。

我們還有一個導入器,可以從JDBC API導入元數據並創建適當的等效模型對象(數據庫,表格,列,鍵等)。

這段代碼可能是開源的,因爲它們被JBoss購買了,但我認爲它還沒有。