webappをデバッグしています。これは、起動時にDataSourceTransactionManager BeanとHibernateTransactionManager Beanを作成するように構成されています。これは意図的なものではありませんが、サードパーティの依存関係が原因です。その効果は良性であるように見える。デバッグを介して表示されているのは、HibernateベースのDAO経由でオブジェクトを永続させるときです.DataSourceTransactionManagerが呼び出され、HibernateTransactionManagerは呼び出されません(Beanは両方とも 'transactionManager'と呼ばれます)。 Spring Javadocは、私たちの状況であるローカルリソースには問題ありません(私はこれを今読んでいると思います)。私。分散JTAベースの環境ではありません。HibernateTransactionManagerではなくORM永続性のためにDataSourceTransactionManagerを使用してもよろしいですか?
私の質問は、ORMベースの永続性のためにHibernateTransactionManagerを使用しないことに悪影響を及ぼすかどうかです。私はHibernateTransactionManagerをDAO上の@Transactionalアノテーションの修飾子を介して使用するように設定を変更できます。
単純な単体テスト、統合テストの設定ではうまくいきますが、何千人ものユーザーと高いレベルの同時実行性がある場合は、本番全体の容量を増やすことが重要です。
TIA、 これはあまりあいまいではありません。
春3.0.x BTW。
これはSpring 3.1のドキュメントです。
秒11.9 "一般的な問題の解決"。
に基づいて、適切なPlatformTransactionManagerの実装を使用してください。
+1 Hmm。面白い。ありがとうございました。これらのテストの1つを試みます。私が見ているのは、DAOコールがトランザクション内で行われていることです.DAOはgetSession()を呼び出します。つまり、Spring SessionFactoryUtilsは新しいセッションを手渡します。あなたが言うように - 私たちはどのくらいの頻度でロールバックを覚えていますか? –
いいです。私はこのテストを試しました。保存後に例外が発生し、Hibernate tx mgrで保存がロールバックされました。 DataSourceTransactionManagerではそれはできませんでした。 –
あなたの言葉をサポートする公式文書を提供できますか?「休止状態のtxnマネージャなしで、HibernateOperationsへのすべての呼び出しは、トランザクションの外で、別のセッションで行われますか?私はDataSourceTransactionManager +休止状態を使用しています。 – DerekY