Strutsを使ったWebアプリケーションでのHibernateセッション管理

ゴールデンウィークぐらいから、作業日報プログラムについて、会社内で公開したく作り込んでいます。Struts,Hibernateを使用して作成し、単純にページ遷移を用いたWebアプリケーションなので、そんなに難しくないと思ってましたが…。やはり経験のなさでしょうね。いろいろと考えさせられることや復習する事も多いのが現状です。


そのなかで、ひとつ悩んだことをお話させていただきます。テーマは表題の通りです。


私は基本的にネットブックでプログラムを作成していますので、テスト等もすべてネットブック上で行っています。(→過去記事)ですので実行速度の遅さを特に体感しているのですが、一番時間がかかっているのが、Hibernateのセッションの生成です。以下のような手順で、いろいろと作って見ました。

  1. DAOクラス毎に作成する。

  2. この方法では特に時間がかかります。(当たり前ですね)毎回セッションファクトリー、セッションの起動を毎回行っていますから。そこでサーブレットのセッションを考え、なんとかHibernateのセッション生成の高速化を検討することにしました。
  3. 初期起動プログラムでセッションファクトリーを生成し、アプリケーションスコープに格納する。セッションはリクエスト毎に生成、クローズする。

  4. この方法によってずいぶん早くなりますTomcatの起動時にセッションファクトリーを作成し、以後はそのセッションファクトリーからセッションを作成しますから。Hibernateセッションはリクエスト毎に、StrutsのExecuteメソッドでHibernateセッションを作成、クローズします。

    上記二つの組み合わせがよいと思い、私はこれを選択しました。Request毎にHibernateセッションを管理していますので、Requestをより安全、確実にクローズさせることができます。


もし、御意見等ございましたら、コメントでもいただければ幸いです。


<参考にさせていただいたページ>
ざわじゃさんのぶろぐ燃焼系
きしだ なおきさんのページとそのサーブレットのセッションのページ
きしださんの本、実は私、持っていました。Sunが主導していたNetbeansというIDEJavaを学ぶ本であり、Netbeansの特徴であるSwingアプリのビジュアル開発を生かして、Javaを学ぼうという本です。内容はJavaの基礎からWebアプリまで浅く広く書かれています。私はシステム系の職業について、一番最初に読んだのがこの本でした。