5

有谁知道一个 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

4 回答 4

5

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

于 2008-11-14T14:17:01.700 回答
4

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

于 2009-06-12T04:13:45.163 回答
0

我已经很多年没有使用它了,但是 Hibernate 曾经有用于在构建时操作数据模型的工具。Hibernate 还具有方言的概念,如果您针对多个数据库供应商,这将很有帮助。

于 2008-11-14T14:09:18.377 回答
0

当我在 MetaMatrix 时,我们使用 EMF(Eclipse 建模框架)构建了这样一个东西,我们在 UML 中创建了一个表示元模型,然后从代码生成它。元建模的好处是,如果你做得好,你可以跨元模型进行互操作,前提是你对元元模型做出了很好的选择。

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

自从被 JBoss 收购后,这些代码可能有一天会开源,但我认为还没有。

于 2008-11-15T03:26:30.030 回答