HibernateTools 初期設定
以前対して使いこなさずに諦めていたHibernateToolsに再度チャレンジ。今ごろ気づいたのだが、パースペクティブがあったのか・・・。これを使うと以外と見やすいかも。で、とりあえずDAOを生成してみたが、エラーが発生。Sessionクラスのget()メソッドのパラメータに誤りがあるようだ。どのバージョンに対応させてるのか調べてみたが、version2,version3のどちらのjarにもそんなメソッドは含まれていない。なんだろこれ。とりあえずここは自分で修正するか。
そういえば以前友達がMySQLで出力すると生成されるコードがおかしいと言ってた気がするな、これのことか?
QueryからSelectを実行してみたが上手くいかない。調べてみると、hbm.xmlファイルにcatalog属性が割り当てられていると、SQLでDatabaseスキーマを指定して出力するようだ。これがMySQLだとSQLで構文エラーとなるらしい。classタグのcatalog属性をhbm.xmlから削除して解決。自動生成とはいっても、この辺はちょこちょこ修正が必要なのかな。Template探して直すのも手だけれど。
さらに調査。hibernate.cfg.xmlにdefault_schemaを指定すると生成されるSQLが「スキーマ名.テーブル名」となるようだ。これにhbm.xmlのcatalog属性まで指定してしまうと、「スキーマ名.スキーマ名.テーブル名」となってエラーとなっていた模様。Java側を自動生成しているので修正すべきは hibernate.cfg.xmlの方かな。default_schemaの設定をコメントアウトして解決。
HibernateTools Templateのカスタマイズ
HibernateConfigurationの設定でテンプレートのディレクトリを指定。次に、既存テンプレートと同名のファイルを用意する。なお、既存のテンプレートの拡張子は".ftl"。ちなみに以前は".vm"だった模様。".vm"Velocityファイルの拡張子なので、Velocityの書式でテンプレートを作ればよかったのだが、ftlってなんだ?と思ったらFreeMakerのことらしい。でもそれって何だ?既存のテンプレートはorg.hibernate.eclipseプラグイン内から、hibernate-tools.jarを探し、それを解凍すればよい。
とりあえず今日はここまで。