Java用のデータベースモデリングライブラリはありますか?
質問
任意のリレーショナルデータベーススキーマを分析および操作するための便利な抽象化を提供する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に買収されてからいつかオープンソースになるかもしれませんが、まだそうではないと思います。