質問

任意のリレーショナルデータベーススキーマを分析および操作するための便利な抽象化を提供するJavaライブラリを知っている人はいますか?私は次のようなことができる何かを考えています

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

and

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形式)またはライブデータベースとの間でスキーマを読み書きしたり、データベーススキーマをpure Javaで定義したりすることもできます。さらに良いことに、オンラインのドコを読んでください、それはかなり良いです。

他のヒント

JDBC自体にはこのような抽象化があります。 java.sql.DatabaseMetaDataを見てください。ただし、これは標準のオプション部分であり、実装されているかどうかにかかわらず、使用しているJDBCドライバーによって異なります。

何年も使用していませんが、Hibernateにはデータモデルを操作するためのツールがありましたビルド時に。 Hibernateには、複数のデータベースベンダーを対象とする場合に役立つ概念の方言もあります。

MetaMatrixにいたとき、EMF(Eclipse Modeling Framework)を使用してこのようなものを構築し、UMLで表現メタモデルを作成し、コードから生成しました。メタモデリングの良い点は、メタメタモデルに対して適切な選択を行っていれば、うまくやれば、メタモデル間で相互運用できることです。

JDBC APIからメタデータをインポートし、適切な同等のモデルオブジェクト(データベース、テーブル、列、キーなど)を作成するインポーターもありました。

このコードは、JBossに買収されてからいつかオープンソースになるかもしれませんが、まだそうではないと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top