ゆーたんのつぶやき

株式会社ノークリサーチにてIT関連のシニアアナリストとして活動しています。

データベース関連プラグイン



Eclipse上でデータベースのテーブルにアクセスしたり、レコード
を挿入したりすることのできるプラグインはいくつかあります。
筆頭はやはり、
「DBEdit」(http://sourceforge.net/projects/dbedit)
でしょうか。
Microsoft Accessのような感覚でデータの編集も
行なうことができ、機能の面でも使いやすさの面でも十分実用
に耐えるレベルかと思います。


「JfaceDbc」(http://www.pratocity.com/index.jsp)
はテーブル定義からHibernateマッピングファイルを生成して
くれる機能があるので注目をしていたですが、Eclipse3.x対応
を節目に有償ツールになりました。
無償版のプロジェクトがブランチしたようで、
「SQLExplorer」(http://sourceforge.net/projects/eclipsesql/)
という名称で提供されています。(SQLExplorerのヘルプを表示
させるとJfaceDbcのロゴマークが出てきます)Hibernate
マッピングファイル生成機能はSQLExplorerにも実装されて
いますが、生成されるのはHibernate2.x向けのマッピング
ファイルのようです。


Hibernateとの関連で言えば、ラウンドトリップ開発が可能な
「Hiberclipse」(http://hiberclipse.sourceforge.net/tools.html)
が話題になりましたが、Hibernate2.xまでの対応で、今
のところはHibernate3.xに対応する気配はなさそうです。


Hibernate3.xに対しては本家からツールが出されています。
http://www.hibernate.org/255.html
テーブル定義からマッピングファイルやJavaソースを生成
できるリバースエンジニアリングマッピングファイルと
Javaソースからスキーマを生成できる機能を備えています。
α版だからなのか、手元の環境のせいなのかわかりませんが、
リバースエンジニアリングスキーマエクスポートもうまく
動きませんでした。本家のツールということで、Hibernate
との連携についてはこのツールに期待を寄せています


Hibernateを使う時にはリバースエンジニアリングも重要ですが
記述したマッピングファイルの結果がどういったスキーマ定義に
なるのかを確認するという場面も多いかと思います。特にコレク
ションマッピングなどを行なう場合には実際のスキーマ定義を見
ながら勉強しないとアタマが混乱してきます。


スキーマエキスポートは上記のようなツールを使ったり、Antタスク
でも実行ができますが、下記のようなスキーマ定義表示用プログラム
を書いておくと意外と便利です。


public static void main(String[] args){
try {
Configuration cfg = new Configuration().configure();
cfg.addClass(Class.forName(args[0]));
new SchemaExport(cfg).create(true, false);
}
catch (Throwable ex) {
ex.printStackTrace();
}
}
上記のプログラムはパラメータにクラス名を指定すると、そのクラス
に対応するマッピングファイルを元にしてスキーマ定義を標準出力
に表示するものです。この時のポイントは「hibernate.cfg.xmlには
マッピングファイル名を記述しない」ということです。マッピング
ファイル名をベタ書きにしてしまうと、クラスを追加するたびごとに
hibernate.cfg.xmlをいじらないといけません。上記のようにしてお
けばhibernate.cfg.xmlは修正しないで済みます。またマッピング
ァイル名ではなくクラス名を指定し、クラスファイルとマッピング
ァイルを同一のディレクトリに置いておくことで整理がしやすくなり
ます。