Strutsを使ったWebアプリケーションでのHibernateセッション管理
ゴールデンウィークぐらいから、作業日報プログラムについて、会社内で公開したく作り込んでいます。Struts,Hibernateを使用して作成し、単純にページ遷移を用いたWebアプリケーションなので、そんなに難しくないと思ってましたが…。やはり経験のなさでしょうね。いろいろと考えさせられることや復習する事も多いのが現状です。
そのなかで、ひとつ悩んだことをお話させていただきます。テーマは表題の通りです。
私は基本的にネットブックでプログラムを作成していますので、テスト等もすべてネットブック上で行っています。(→過去記事)ですので実行速度の遅さを特に体感しているのですが、一番時間がかかっているのが、Hibernateのセッションの生成です。以下のような手順で、いろいろと作って見ました。
- DAOクラス毎に作成する。
- 初期起動プログラムでセッションファクトリーを生成し、アプリケーションスコープに格納する。セッションはリクエスト毎に生成、クローズする。
この方法では特に時間がかかります。(当たり前ですね)毎回セッションファクトリー、セッションの起動を毎回行っていますから。そこでサーブレットのセッションを考え、なんとかHibernateのセッション生成の高速化を検討することにしました。
この方法によってずいぶん早くなります。Tomcatの起動時にセッションファクトリーを作成し、以後はそのセッションファクトリーからセッションを作成しますから。Hibernateセッションはリクエスト毎に、StrutsのExecuteメソッドでHibernateセッションを作成、クローズします。
上記二つの組み合わせがよいと思い、私はこれを選択しました。Request毎にHibernateセッションを管理していますので、Requestをより安全、確実にクローズさせることができます。
もし、御意見等ございましたら、コメントでもいただければ幸いです。
<参考にさせていただいたページ>
ざわじゃさんのぶろぐ燃焼系
きしだ なおきさんのページとそのサーブレットのセッションのページ
きしださんの本、実は私、持っていました。Sunが主導していたNetbeansというIDEでJavaを学ぶ本であり、Netbeansの特徴であるSwingアプリのビジュアル開発を生かして、Javaを学ぼうという本です。内容はJavaの基礎からWebアプリまで浅く広く書かれています。私はシステム系の職業について、一番最初に読んだのがこの本でした。