是否有适用于Java的数据库建模库?

时间:2008-11-14 14:04:09

标签: java database rdbms modeling

有没有人知道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 个答案:

答案 0 :(得分:5)

JDBC本身就有这样的抽象。查看java.sql.DatabaseMetaData。但是,这是标准的可选部分,它取决于您使用的JDBC驱动程序是否已实现。

答案 1 :(得分:4)

DdlUtils有你想要的东西。您可以在XML(以Torque格式)或实时数据库中读取/写入模式,甚至可以在纯Java中定义数据库模式。更好的是,阅读在线doco,它非常好。

答案 2 :(得分:0)

我多年没有使用它,但Hibernate在构建时曾经有tools for manipulating data models。 Hibernate还有一些概念方言,如果您针对的是多个数据库供应商,这些方言会有所帮助。

答案 3 :(得分:0)

当我在MetaMatrix时,我们使用EMF(Eclipse Modeling Framework)构建了这样的东西,我们在UML中创建了一个代表性元模型,然后从代码生成它。元模型的好处在于,如果你做得好,你可以跨元模型互操作,只要你已经对元元模型做出了很好的选择。

我们还有一个导入器,它将从JDBC API导入元数据并创建适当的等效模型对象(数据库,表,列,键等)。

这段代码有一天可能是开源的,因为它们被JBoss收购了,但我认为它还没有。