この前のエントリの続き。
Hibernate Toolで生成されるコードのJavadocが微妙な感じだったのですが、それをカスタマイズする為にorg.hibernate.cfg.reveng.ReverseEngineeringStrategyを実装したクラスを使えば命名規則やメタデータに手を加える事が可能です。
ってところまで書いたと思いますが、実はそのままではN:1マッピングや複合キーにはどうしてもJavadocの生成が出来ません。そこで、
- EclipseのプラグインではなくAntのタスクにする
- プロジェクト内にorg.hibernate.cfg.JDBCBinderを配置する(Hibernate Toolの内部のクラス)
- Antタスクのクラスパスの解決順を変える
- org.hibernate.cfg.JDBCBinderを改造する
という手順になります。さらにテンプレートはFreeMarkerで対応する事になりますが、きめ細かい修正を行うにはBuiltinsを使う事になります。Smartyで言えば修正子のようなものです。
JDBCBinderの改造は、主にメタアトリビュートの設定が中心になります。ReverseEngineeringStrategyで解決できないメタアトリビュートを設定するようなイメージです。
キレイなJavadocやコードを生成するにはデータベースの情報だけでは不十分なことがあります。例えばJavaのプロパティ。DBのカラムの削除フラグがdelete_flagの場合、JavaのプロパティのdeleteFlagに直す事はできますが、DELFLGからdeleteFlagにするためには辞書が必要です。Javadocに論理名を表記するのも重要です。
そこで私の場合はデータベース定義書(Excel)と辞書ファイル(Excel)を用意して、テーブル、カラム、それぞれの論理名と物理名とJava名の対応表となるXMLファイルを、VBAでマージして生成するようにしました。(部下に作らせたwww)
確実に5人日ぐらいは消費しましたが、テーブル数が50くらいあるので自動生成できるクラスが150クラスぐらいあります。さらに要件+テーブルが増えるたびに工数を得するので、非常に有用ですね。