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