1.3. パート3 - EventManager Web アプリケーション


Hibernate の Web アプリケーションは、 スタンドアロンのアプリケーションのように SessionTransaction を使用します。しかし、一般的なパターンも一部便利です。 ここで EventManagerServlet を作成します。 このサーブレットは、 データベースに格納した全イベントを一覧表示でき、 新しいイベントを入力するため HTML フォームを提供します。

1.3.1. 基本的な Servlet の記述

最初に、 基本的なプロセスサーブレットを作成する必要があります。 サーブレットは HTTP の GET リクエストのみを処理するため、 doGet() メソッドのみを実装します。
package org.hibernate.tutorial.web;

// Imports

public class EventManagerServlet extends HttpServlet {

    protected void doGet(
            HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        SimpleDateFormat dateFormatter = new SimpleDateFormat( "dd.MM.yyyy" );

        try {
            // Begin unit of work
            HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction();

            // Process request and render page...

            // End unit of work
            HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().commit();
        }
        catch (Exception ex) {
            HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().rollback();
            if ( ServletException.class.isInstance( ex ) ) {
                throw ( ServletException ) ex;
            }
            else {
                throw new ServletException( ex );
            }
        }
    }

}
Copy to Clipboard Toggle word wrap
このサーブレットを src/main/java/org/hibernate/tutorial/web/EventManagerServlet.java として保存します。
ここで適用されるパターンは session-per-request (リクエスト毎のセッション) と呼ばれます。 サーブレットがリクエストを受け取ると、 SessionFactorygetCurrentSession() への最初の呼び出しにより、 新しい Hibernate の Session が開かれます。 その後、 データベースのトランザクションが開始されます。 データの読み書きに関わらず、 すべてのデータアクセスはトランザクション内で発生します。 アプリケーションで自動コミットを使用しないでください。
全データベース操作で新しい Hibernate Session を使用 しないでください 。全てのリクエストで機能する、1つの Hibernate Session を使用してください。自動的に現在の Java スレッドにバインドされるので、getCurrentSession() を使用してください。
次に、 リクエストの可能なアクションは処理され、 HTML の応答がレンダリングされます。 これについては後ほど説明します。
最後に、 処理とレンダリングが完了した時に作業単位を終了します。 処理中やレンダリング中に問題が発生した場合、 例外がスローされ、 データベーストランザクションがロールバックされます。 これにより、 session-per-request パターンが完了します。 全てのサーブレットにトランザクション境界のコードを書く代わりに、 サーブレットフィルタに記述することも可能です。 Open Session in View と呼ばれるこのパターンについては、 Hibernate の Web サイトや Wiki を参照してください。 サーブレットではなく JSP でビューのレンダリングを考慮している場合、 すぐにこのパターンについての情報が必要になるでしょう。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat