有没有人知道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中的一个,还是我必须自己编写?

有帮助吗?

解决方案

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

其他提示

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

多年来我没有使用它,但Hibernate曾经使用操作数据模型的工具在建设时。 Hibernate还有一些概念方言,如果您针对的是多个数据库供应商,这些方言会有所帮助。

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top