1

EJB、Spring、および Hibernate のコンテキストでのトランザクション マネージャーの使用に関して質問があります。私たちのプロジェクトでは、アノテーション @TransactionAttribute(TransactionAttributeType.REQUIRED) でマークされた EJB ステートレスがあります。これまでのところ、これ以上のトランザクションは定義されていません。

現在、すべての EJB がサービスを呼び出します。後者は、呼び出しを最終 DAO にリダイレクトするデリゲートにすぎません。すべての DAO で HibernateTemplate を使用します。問題は、DAO 内のすべての get/load メソッドの直後にセッションが閉じられることです。なんで?

HibernateTemplate を従来の Hibernate Session に置き換えて (最善の方法)、getSession().getTransaction().isActive() を呼び出すと、常に false になりますが、サービス呼び出し (デリゲート) が終了するまで、セッションは引き続きアクティブです。上記の通り)。この後、セッションは終了しました。なぜ私はこのように異なる振る舞いをするのでしょうか? Spring/hibernate は EJB トランザクション属性を認識できませんか?

前もって感謝します。

ファビオ

4

0 に答える 0