5


1

誰かが任意のリレーショナルデータベーススキーマを分析し操作するための有用な抽象化を提供するJavaライブラリを知っていますか? こんなことができるものを考えている

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

そして

DbTable myTable = ... (DbColumn col:myTable.getColumns()){...の場合 = col.getType(); }

のようにテーブルを操作することも

myTable.addColumn(new DbColumn( "my_new_column"、Type.UNSIGNED_INTEGER););

DbColumn myColumn = ... myTable.removeColumn(myColumn);

ほとんどのデータベースモデリングツールは、そのような抽象化を内部的に持っていますが、使用できるものはJavaにあるのでしょうか。

4 Answer


5


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


4


あなたが探しているものは DdlUtilsにあります。 XML(Torqueフォーマット)やライブデータベースとの間でスキーマの読み書きをしたり、あるいは純粋なJavaでデータベーススキーマを定義することさえ可能です。 いっそのこと、オンラインドコを読んで、それはかなり良いです。


0


私は何年も使っていませんが、Hibernateはビルド時に データモデルを操作するためのツールを持っていました。 Hibernateには、複数のデータベースベンダーをターゲットにしている場合に役立つと思われる方言もあります。


0


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

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

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