0

hib公式ドキュメントからの引用:

バージョン 3.0.1 から、Hibernate は SessionFactory.getCurrentSession() メソッドを追加しました。当初、これは JTA トランザクションの使用を想定しており、JTA トランザクションは現在のセッションのスコープとコンテキストの両方を定義していました。多数のスタンドアロン JTA TransactionManager 実装の成熟度を考えると、J2EE コンテナにデプロイされているかどうかに関係なく、すべてではないにしてもほとんどのアプリケーションで JTA トランザクション管理を使用する必要があります。それに基づいて、JTA ベースのコンテキスト セッションだけを使用する必要があります。 引用の終わり

Tomcat6 をサーブレット コンテナーとして使用しており、Hibernate 3.2 をプロジェクトに統合する必要があります。

JNDI を使用して SessionFactory ルックアップを構成する方法に関するドキュメントを見つけましたが、期待どおりには機能しません。

引用: Hibernate は、JTA を使用するすべての環境で動作します。実際、JTA は標準の Java トランザクション インターフェイスであるため、可能な限り JTA を使用することをお勧めします。引用終わり。

休止状態の構成では、 current_session_context_class = jta を示します

そして今、「TransactionManagerLookupが指定されていません」というエラーが表示されます。

問題は、Tomcat が JTA をサポートしていないことです。それを機能させるには、正しく理解している場合、JOTM またはその他のライブラリを Tomcat に追加する必要があります。

しかし、引用によると、JTAの使用が推奨されています。

この状況であなたは何をお勧めできますか?

4

2 に答える 2

1

あなたの選択はかなり明確です:

  1. JTAをサポートするサーブレットコンテナに変更する
  2. プログラムでトランザクションを自分で制御するなど、JTA以外の別のトランザクションメカニズムを見つけます。
于 2010-03-31T13:08:57.873 に答える
0

この状況であなたは何をお勧めできますか?

JTA を使用せずに、Open Session In Viewパターンを使用してセッションを処理します。

于 2010-03-31T12:48:29.113 に答える