Hibernate3でhbm2java

Hibernate3.*になってからhbm2java(Hibernateマッピングファイルから、マッピングクラスを生成するantタスク)が使えず、
不便を感じている人も多いのではないでしょうか。
Hibernate3用のEclipse Plugin、Hibernate3 Tools(現在アルファ版)にはhbm2java
等のant用ツールが含まれており、従来同様hbm2javaを実行することもできます。
Hibernate3 Toolsプラグインを導入後、ヘルプを見ると実は書いてあるのですが、実行には
一手間必要です。
build.xmlの設定
 ヘルプにはTaskDefの説明で
 classpath="[location of hibernate-tools.jar, velocity-1.4.jar, velocity-tools-generic-1.4.jar, jtidy-r8-21122004.jar, hibernate3.jar & jdbc drivers]"
 などと萎えることが書いていますが、実はこれらのjarはHibernate3 Toolsプラグインのフォルダ内に一式そろっています。
 そこで、以下のようなbuild.xmlを用意しました。
 マッピングXMLは、あらかじめソースフォルダに作成済みです。























hibernate.cgf.xml
 hibernate.cfg.xmlは必須です。(オレはSpringで全部設定するからそんなもんいらねぇ!と言う人でも)
 ただし、ほぼ空っぽで十分です。hbm2javaだけなら、DBに接続するわけではありませんし、マッピングXMLを指定すると逆に
 マッピングクラスが無いといって怒られます。これから生成するから無いのは当然ですね。
 下のhibernate.cfg.xmlをソースフォルダのルートに作ります。

<?xml version="1.0" encoding="UTF-8"?>





③実行
 あとは流すだけです。(「あとは流すだけ」って素敵な響きですね)
 コンソールまたはEclipseから"ant codegen"を実行すればマッピングクラスのソースが作られます。

hbm2docはすばらしい

上のヘルプ文書を見てて気づいたんですが、<hbm2doc>(hbmファイルからスキーマ仕様書作成)という興味深いantタスクが追加になっているようです。
これは、SQLに依存するためSQLDialectの指定が必要です。
上の②、hibernate.cfg.xmlのSessionFactory記述を以下のように修正します。



org.hibernate.dialect.Oracle9Dialect

で、①のbuild.xmlの<hbm2java/>の次の行に<hbm2doc/>を追加して、
いざ実行。
ソースフォルダ/tablesにドキュメントが作成されます。
ここのindex.htmlを開いてみると・・うお!感動。
結構凝ったスキーマドキュメントじゃないですか。
この機能、Torqueにはあったんで、Hibernateにもほしいと思ってたんですよ。
すばらしい。