次のページへS2Hibernateを用いてDBアクセスを行う方法には、大きく分けてSessionオブジェクトを直接利用する方法と、アノテーションを用いることでSessionオブジェクトには直接触れない方法の2種類があります。後者の方法を実現するための仕組みをS2Hibernate.daoといいます。前者の方法から説明していきましょう。最初の例として、categoryテーブルに保存されているデータをCategoryオブジェクトを要素とするListとして取得する方法を紹介しましょう。DAOインターフェイスとして、Listを戻り値とするgetCategories()メソッドを作成します(リスト4)。次にこのメソッドの実装クラスを作成します(リスト5)。このとき実装クラスのコンストラクタにorg.seasar.hibernate3.S2SessionFactory型の引数を設定することを忘れないでください。この引数はHibernateのSessionFactoryをラップするものです。この実装クラスはS2のコンテナからリスト6のようにして呼び出し、実装したメソッドを実行すればリスト7のような結果が得られます。このとき、diconファイルの内容はリスト8のようになります。<include>タグでs2hibernate3.diconをインクルードしている以外は、S2JDBCやS2Daoのそれとほとんど変わりがありません。s2hibernate3.diconというファイルもj2ee.diconと同じフォルダにありますので、実行環境にコピーしたものを用いてください。Hibernate2対応の場合はs2hibernate.diconをコピーし、これをdiconファイルにインクルードしてください。本稿で用いているS2Hibernate1.1.0がHibernate3対応版となっていることは、これまでに説明しているとおりですが、これに伴って、S2HibernateのSessionオブジェクトは、Hibernateのorg.hibernate.Sessionを直接用いることになりました。それまでのS2Hibernate1.0.xではorg.seasar.hibernate.S2Sessionオブジェクトが用いられていましたので、findメソッドが使えなくなるなど、SessionオブジェクトのAPIが大きく変更されることになります。S2Hibernateのバージョンを移行する際には、この点に注意が必要です。続いて、INSERT、UPDATE、DELETEの場合も紹介しましょう。HibernateのSessionオブジェクトを直接用いますので、このオブジェクトのメソッドでINSERT、UPDATE、DELETEを行う方法を知っていれば、それと同じ処理をDAOインターフェイスと実装クラスで実行できるようにします。実行結果は読者ご自身で確かめてみてください。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。