検索
連載

SeasarのDBアクセスにHibernateを使うSeaser Projectの全貌を探る(6)(2/3 ページ)

Seasar(シーサー)は、国内のコミュニティ「The Seasar Project」によって開発が行われているオープンソースプロダクトだ。DI+AOPコンテナとして評価が高いSeasarV2は、J2EE開発の現場にも影響力を持ち始めた。例えば電通国際情報サービスがSeasar Projectを正式に支援することを表明し、2005年6月からは同社による商用サポートサービスが開始されている。本連載では、同プロジェクトの代表的なプロダクトを紹介していく。(編集局)

Share
Tweet
LINE
Hatena

 S2Hibernateを用いてDBアクセスを行う方法には、大きく分けてSessionオブジェクトを直接利用する方法と、アノテーションを用いることでSessionオブジェクトには直接触れない方法の2種類があります。後者の方法を実現するための仕組みをS2Hibernate.daoといいます。まずは前者の方法から説明していきましょう。

SessionオブジェクトによるDBアクセス

SELECT編

 最初の例として、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ファイルにインクルードしてください。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Sessionオブジェクトの変更

本稿で用いているS2Hibernate1.1.0がHibernate3対応版となっていることは、これまでに説明しているとおりですが、これに伴って、S2HibernateのSessionオブジェクトは、Hibernateのorg.hibernate.Sessionを直接用いることになりました。それまでのS2Hibernate1.0.xではorg.seasar.hibernate.S2Sessionオブジェクトが用いられていましたので、findメソッドが使えなくなるなど、SessionオブジェクトのAPIが大きく変更されることになります。S2Hibernateのバージョンを移行する際には、この点に注意が必要です。


INSERT、UPDATE、DELETE編

 続いて、INSERT、UPDATE、DELETEの場合も紹介しましょう。HibernateのSessionオブジェクトを直接用いますので、このオブジェクトのメソッドでINSERT、UPDATE、DELETEを行う方法を知っていれば、それと同じ処理をDAOインターフェイスと実装クラスで実行できるようにします。実行結果は読者ご自身で確かめてみてください。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る