問題タブ [spring-transactions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - すべてのsaveOrUpdateメソッドをtry-catchで囲む必要がありますか?
以下のようなtry-catchブロックでDAOのsaveOrUpdateまたはdeleteを常に囲む必要がありますか?Session
spring - @Transactionalの使用中に「進行中のトランザクションはありません」エラー
すべて、Springでアノテーショントランザクションを使用しようとして、javax.persistence.TransactionRequiredExceptionを取得しています:トランザクションは進行中ではありません
常にエラー。
エラースタックトレース:
AOPを使用すると、同じコードが正常に実行されることに注意してください。
テクノロジースタックは次のようになります。
これが私のアプリケーション構成です:
applicationContext.xml
また、struts.xmlで、MyDAOクラスでsaveOrUpdateData()を呼び出します。
web.xml
my-persistence.xml
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd "version =" 1.0 "> org.hibernate.ejb.HibernatePersistence jdbc / my_dataSource1.1
@Transactionalを使用するDAOメソッドクラスは次のようになります。
//クラスMyDAO
BaseDAOクラス:
使用されるライブラリ:
システム構成:
parent_lastクラスのロードを有効にして、WebsphereアプリサーバーでデフォルトのJPAプロバイダーを「org.hibernate.ejb.HibernatePersistence」として割り当てました。
どんな助けでも大歓迎です。
ありがとう
=======================================
みんなの使い方にこれを追加...
私はついにAOPベースのトランザクション管理を行う必要がありました。アプリケーションで@Transactionalを機能させる方法が見つかりませんでした。
AOP統合のためにアプリケーションに追加した部分(applicationContext.xml内)を以下に追加します。
お役に立てれば、
java - コミットする前に、OracleセッションでのすべてのDML変更を確認してください
Oracle(10g)ストアドプロシージャのテストハーネスを作成しています。@Transactionalテストを使用してストアドプロシージャを実行し、テストの終了時にトランザクションがロールバックされるようにすることを計画しています。したがって、私のテストは次のようになります。
テストのセッションにローカルな変更がテストメソッド内に表示されるため、正しい更新が行われたと断言できます。
ただし、より厳密なアサーションを作成するには、セッションで呼び出されたがまだコミットされていないDMLステートメントの完全なリストを確認できると便利です。これを見る方法はありますか?
java - TransactionManager と注釈に関する Spring 3 の問題
コンポーネントTransactionManagerの 1 つのメソッドに@Transactional.
これは私の状況です:
web.xml: Spring の 2 つの xml ファイルをロードしますContextLoaderListener(applicationContext.xmlおよびdatabase.xml)- applicationContext.xml: 注釈を介して定義できないいくつかの Bean と、注釈のタグに加えて、通常の context:annotation-config と context:component-scan が含まれています (この component-scan には、
@Transactionalメソッドを含むパッケージが含まれています) database.xml: データソース (BasicDataSourcecommons-dbcp から使用しています)、トランザクション マネージャーの定義、および tx:annotation-driven が含まれています。
@Component (DeleteComponentインターフェイスと実装 ( ) を持つ ) がありますDeleteComponentImpl。実装クラスには で注釈が付けられ、注釈が付けられた@Componentパブリック メソッドが 1 つ@Transactionalあります (Spring のドキュメントに記載されているように、インターフェイスではなく具象クラスに注釈を付けました)。デフォルトで問題ないので、@Transactional引数を入れませんでした。@Repositoryこのクラスには、を介して注入されるいくつかの DAO ( で注釈が付けられています) があり@Autowiredます。私はプレーンな JDBC のみを使用しています (Hibernate やその他の ORM は使用していません)。これは(spring- で定義されている)@Componentに注入されます。@Controllerservlet.xml
ただし、 asアノテーションが付けられたメソッド@Transactionalが例外をスローした場合 (未チェック、 as RuntimeException)、何もロールバックされません。データベースは、例外の前に行われた変更を保持します。アプリケーションをローカルでテストするために Jetty Web サーバーを使用しています。私が気付いたのは、実際にはトランザクション マネージャーが設定されていないように見えることです。実際、私のトランザクション マネージャーの名前はtransactionManagerです。注釈駆動型トランザクションを設定する xml 行は次のとおりです。
次のような存在しない Bean 名を使用するように変更すると、
アプリケーションは引き続き正しくデプロイされ、文句はありません。
動作させるために何を確認する必要があるかについてのヒントはありますか?
ありがとう。
java - 春のPROPAGATION_REQUIREDトランザクション属性?
http://www.vermatech.com/code/SpringTransactionExamples.htmlで提供されている最初のケーススタディでは、プログラムは2つのメソッドを呼び出しています。
ここで、initializeCountriesはランタイム例外をスローします。両方のメソッドのトランザクション定義属性はPROPAGATION_REQUIREDです。それでも、deleteAllCountriesメソッドの下のトランザクションはコミットされますが、initializeCountriesの下のトランザクションはロールバックされます(同じケーススタディで提供されたログに従って)。
PROPAGATION_REQUIREDの定義によると、現在のトランザクションをサポートします。存在しない場合は、新しいものを作成します。したがって、ここでの私の質問は、initializeCountriesメソッドでのトランザクションは、deleteAllCountriesメソッドでのトランザクションをサポートする必要があるということです。つまり、両方の方法を単一のトランザクションとして扱う必要があります。私の理解によると、完全なトランザクションをコミットするか、ロールバックする必要がありますか?どうしてログがそれらを別々に扱っているのかわからない。
java - 春のトランザクションの同期
プロジェクトではSpringとHibernateを使用し、階層化されたアーキテクチャを備えています。コントローラ->サービス->マネージャ->ダオ。トランザクションはManagerレイヤーで開始されます。db内のオブジェクトを更新するサービス層のメソッドは、多くのスレッドによって呼び出され、これにより、古いオブジェクトの期待値がスローされます。そのため、このメソッドを同期させても、古いオブジェクトの例外がスローされるのを確認しました。私はここで何が間違っているのですか?このケースを処理するためのより良い方法はありますか?
よろしくお願いします。
hibernate - Spring Annotation driver Transaction with AspectJ 問題
私は AspectJ コンパイル時の織りと春の 3.O を使用しています。およびHibernate 3.0 ... AspectJウィービングはロギングなどの単純なものでは正常に機能しますが、これはトランザクションでは正しく機能しません
Sprong-aspects jar は lib forlder にも存在しますが、まだトランザクション サポートが機能していません。
私はこのように使用しています
ロギングはトランザクションを指定しません..Springコンテナーでクラスが定義されていない場合、トランザクションはSpring aopで正常に機能しますが、aspectjでは機能しません
java - 予期しない動作をするSpringの宣言型トランザクション管理
宣言型トランザクション管理を備えたSpring+Hibernateアプリケーションがあります。FooService2つのパブリックメソッドMethodAと。を持つサービス( )がありMethodBます。クライアントはcall、MethodAを呼び出しますMethodB。
MethodB以降でのみトランザクションを開始したい。これは私の春のアプリケーションコンテキストからのスニペットです:
ただし、MethodAクライアントからを呼び出すと、が呼び出されるときにトランザクションプロキシが作成されませんMethodB。アプリケーションコンテキストでBean構成にMethodA も追加すると、トランザクションプロキシが呼び出されます(MethodA期待どおりに開始します)。なんでそうなの?MethodB以降でのみ作成されるトランザクションを実現できますか?
hibernate - org.hibernate.HibernateException: トランザクションがアクティブでない場合、ロードは無効です
ユーザー データのロード中に次のエラーが発生します。
私は AspectJ コンパイル時の織りと春の 3.O を使用しています。および休止状態 3.0
以下は私のコードと構成ファイルです。
構成:
前もって感謝します
java - 春のトランザクション ロールバック
私はこれを2日間理解しようとしましたが、成功しませんでした。Spring 3.0.5 と Postgress でアノテーション駆動のトランザクションを使用しています。ビジネス ロジック メソッドから 2 つの dao メソッドを呼び出しています。
2 番目のメソッド (addGoogleTransaction) は最後に RuntimeException をスローしますが、トランザクションはロールバックされず、両方の行が挿入されます。
DAO メソッドは次のようになります。
Spring 構成ファイル:
他に何か設定する必要がありますか? @Transactional をビジネス ロジック クラスに、@Transactional を dao メソッドに追加しようとしましたが、どちらも機能しません。ありがとう
これは、テスト目的で (@Controller アノテーションが付けられた) コントローラー クラスから呼び出されます。