Hibernate Toolsのインストール
既存DBからのリバースエンジニアリングによるDTO、マッピングファイルの生成ができるみたい。これを入れてみる。
Eclipse Marketplaceにて「JBoss Tools」で検索
->JBoss Tools (Indigo)を選択
->すごい量のツール類の一覧より、Hibernate Toolsのみ選択
ライセンスに同意してインストール。
必要なライブラリの追加
m2eclipseがインストールされている状態で、新規Maven Projectを適当に作成。
pom.xmlに以下を追加。
- hibernate-c3p0:4.1.3.Final
- mysql-connector-java:5.1.20
hibernate-c3p0を追加すると、必要なライブラリが芋づる式に引っ張られてくるが。。。なんか依存関係のあるライブラリが多すぎるな〜(気にならない?)。
そして、後に自動生成されるコードのためにapache common loggingも追加しておいたほうがいい。
ログのコード書き換えるならslf4jでもいいかもよ。
コードの生成と修正
アクセス対象のデータベース、テーブルはすでにインスト、作成済みの状態としよう。
参考サイトさんをガン見しながら下記の手順を実施。
- とりいそぎDB接続用のコンフィグファイル *.cfg.xmlの作成
- リバースエンジニアリングファイル *.reveng.xmlの作成
- DTO、DAO、マッピングファイル *.hbm.xml、コンフィグファイル *.cfg.xmlの生成(リバースエンジニアリング)
リバエンすると、 <テーブル名>.java というDTOと、マッピングファイル <テーブル名>hbm.xml を生成してくれる。これはまあ便利。
参考サイトさんでは作られていないが、DAOも自動生成できそうなのでやってみる。
<テーブル名>Home.javaという名前でDAOが生成されますが、問題は、、、
そのままだと動きません。はは。ひどい話や。
とりいそぎ生成されたfindById(String id)メソッドを使ってみましたが、実行するとエラーがでます。
乗り越える試練は実行時に出るエラー2つ。と、試練に見せかけたトラップ1つ。
トラップ
生成されたDAOのコード内でSessionFactoryの取得にJNDI Lookupが使われているので、buildSessionFactory()に書き換えたら非推奨(deprecated)などと言われる。
[解答例]
前述の試練とこれを調べていくうちに、ServiceRegistryかも?かも?と思ってしまいますが、調べてはいけません。時間を無駄にします。
だいたい、オフィシャルのドキュメントですらbuildSessionFactory()引数無しで使ってるのだから。
試練其の一
エラーメッセージ: No CurrentSessionContext configured!
(意訳)おい、おまえ、SessionContext設定してねぇだろうが。
[解答例]
cfg.xmlファイルの<session-factory>タグ内に下記のプロパティを追加
<property name="current_session_context_class">thread</property>
試練其の二
エラーメッセージ:get is not valid without active transaction
(意訳)アクティブなトランザクションじゃねぇのにgetとか使うんじゃねぇよ、このばか。
[解答例1]
findByIdメソッド内、get()を使う前にSessionオブジェクトのbeginTransaction()を呼ぶ。get()が終わったらclose()を呼んだ方がよいのかな。
ちなみに、get()の代わりにload()使っても同じエラーが出るなりよ。
[解答例2]
SessionFactoryからSessionを取得するメソッドを、getCurrentSession()でなく、openSession()に書き換える。
というわけで、生成したままでは動かないのが取っつきづらいし、情報収集がめんどくさすぎて使う気が萎えますな。
あと、マッピングファイルを書くということはDAOのなかでRecordSetからDTOへの詰め替えコードを書くのと手間的に変わらんのではないか?管理するファイルが増えるだけ。私の不勉強の故かもしらんが、利点がよう分からん。xmlレスのS2Daoとかのほうがよさそうに見えるな〜。
ここからさらにSessionの管理、ThreadLocalとか勉強する必要があるみたいだし、あいかわらずtry catch地獄のようだし。。。
そんな訳で、違うやつも試してみよう。
[参考サイト]
・Hibernate Tools インストール手順 - TATSUNET
・第1章 チュートリアル (JBossサイト)
0 件のコメント:
コメントを投稿