Hibernateを試してみる

Seasar2に続き、Hibernate3を試してみました。

公式サイトのマニュアルと、バージョンは違うものの@ITの記事「Hibernateで理解するO/Rマッピング」を参考に、昨日、S2DAOで実験したGroupUnitとMemberの簡単なモデルで実験。

公式サイトのマニュアル(英語ですが)のサンプルソースを参考に、JavaBeansを2つ(GroupUnitとMember)、マッピングファイル、Hibernateの設定ファイルを作成。
それで・・・、

  • 単純なGroupのInsert
  • 単純なGroupのSelect(List)
  • N:1関連のSelect
  • Groupを持つMemberのInsert
  • 1:N関連のSelect
  • Memberが持っているGroupを変更後Update

といった内容の実験を行いました。

細かい部分の実験はやっていませんが、上記のシンプルな実験は、すべて成功。
お手軽なS2DAOと違ってきちんとしたマッピングファイルが必要になりますが、その分、機能は充実しています。1:N関連がサポートされているし、Groupを持つMemberのInsertの件も、RDB上での外部KEYを意識することなく(マッピングファイルには書く必要がありますが、プログラムでは意識不要)、対応できます。カッコイイ。

Updateの実験では、トランザクションの実験を兼ねてみました。これもcommit、rollbackとも整然と動いてくれます。ただ、rollbackしても同じSession内だと、Query使って再取得してもrollbackされていませんね。別Sessionにすると、ちゃんとrollbackされた内容が反映されます。

おそらく、マッピングファイルが肝だなぁと思いました。この文法がきっとHibernateで出来ることのすべてなんだろうし、真のOOD、OOPをやるために必要な機能は、おそらくすべて揃っているのだろうし・・・。全体の把握はなかなか大変でしょうが、把握しなければうまく使えないのではないかと。

昨日のS2DAOといい、今日のHibernateといい、永続化部分の実装を全部人間がやるのは、いまやナシなんだなと実感しました。

あと、公式サイトの設定ファイルサンプルをそのままコピペすると、動かすたびにDROP TABLEとCREATE TABLEされます。マッピングファイルからDDLを作れるわけですが、勝手にテーブルを消したり作ったりまでやっちゃいます。実験用のサンプルだからでしょうが、コピペするだけで中身を見ないと、ハマります。ご注意を。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。