問題タブ [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.

0 投票する
1 に答える
1695 参照

spring - @ManagedBeanと@Transactional-Springのバグ?回避策?

Webアプリに次のJSFバッキングBeanがありました

repository.saveメソッド呼び出しに到達すると、次のエラーが発生します

2つの質問があります

  1. これはこのようなバグが原因ですか?
  2. 2つの回避策があると思います-他に何かありますか?

2.1最初の回避策-を使用する

2.22番目の回避策

ヘルパークラスを作成し、代わりにそれに注釈を付けます。

2.3(考えられる3番目の回避策は、内部クラスのメソッドに@Transactionalアノテーションを付けることです。これは2.2と非常によく似ています)。

0 投票する
2 に答える
1470 参照

hibernate - Groovy / Hibernate / @Transaction は、現在のスレッドで No Session found を返します

Spring/JPA/Groovy/Hibernate スタック (注: grailsではありません) があり、起動時にNo session found for current thread何らかの@Transactional作業を実行しようとするとエラーが発生することがわかりました。

私は、シミュレーションで使用されるサンプルデータをデータベースに入力しようとする別のクラス@PostConstructのメソッドを呼び出すコントローラークラスを持っています。@Transactional

controllerクラスは次のとおりです。

ご覧のとおり、ここで説明した理由により、純粋な@Transactionalアプローチから離れました。@PostConstruct

MyIPublisherは、次のような groovy クラスです。

これは次の実装です。

注意してください、私はpopulateData()としてマークしようとしまし@Transactionalたが、効果はありません。

私の Spring コンテキスト クラスでは、 を定義して<tx:annotation-driven/>います。

私が知る限り、私はすべてを正しく行いました。しかし、私はこれを機能させることができないようです。

他に何が必要ですか?

更新: dataAccess 関連の Bean を設定する Bean は次のとおりです。

0 投票する
1 に答える
5674 参照

spring - Spring 3.1 - Spring NamespaceHandler が見つかりません

Tomcat 6 でアプリを実行しようとすると、Spring 3.1 名前空間の問題が発生します。

これが私のプロジェクト構成です:

pom.xml:

アプリケーションコンテキスト.xml

すべての JAR はWEB-INF/libの下にあり、XML 構成はWEB-INF の下にあります。何かご意見は?

前もって感謝します, アンドレ

0 投票する
1 に答える
218 参照

spring - メソッドの Spring PROPAGATION_REQUIRED は他のスレッドをブロックしますか?

スレッドが m1() というメソッドに入り、新しいトランザクションを開始するとします。2 番目のスレッドが同じメソッドに入ろうとすると、2 番目のメソッドがブロックされていることがわかります。PROPOGATION_REQUIRED は、最初のスレッドがジョブを完了するまで 2 番目のスレッドをブロックしますか? 分離は設定されていません(デフォルト)。

ありがとう。

0 投票する
1 に答える
2637 参照

spring-aop - 春の取引とAOP

私はまだ春のトランザクションとaopの学習段階にあり、いくつかの誤解があり
ます。1.使用しない場合は、aop-adviceを使用し、サービスごとに次のように指定します。

@Transactional(rollbackFor = java.lang.Exception.class、readOnly = true)

そして、春のログを見ると、すべてが期待どおりに機能しているようです。これが意味するのは、トランザクションが作成され、例外が発生した場合にロールバックが発生するということです。しかし、あなたが次のようなものを使用する場合:

したがって、このシナリオを使用して春のログを見ると、ロールバック後に次のようなものが得られるため、別のトランザクションの内部に2つのトランザクションがあるように見えます。

あなたがそこに見ることができるように、私は私が理解していない線をマークしました。

そして2番目の問題:同じログファイルで私は次のような行に気づきました:

そして私は少しグーグルして、これを追加した後:

entitymanager Bean、今ではjpaがトランザクションをjdbcトランザクションに公開しているようです。問題は、この構成の長所/短所が何であるかわからないことです。

0 投票する
2 に答える
1870 参照

transactions - Spring Propagation.REQUIRES_NEW @Transaction commitは、外部トランザクションが終了した後にのみログに表示されます

相互に呼び出すトランザクションメソッドがありますが、トランザクションはコミットする必要のあるスポットの後にコミットするか、少なくとも挿入ログがその後に表示されるようです。これがhierachyの呼び出しです。

ルート/初期メソッド呼び出しから戻った後でのみ、ENTITY_CHANGED_IN_REVISIONテーブル/EntityChangeエンティティのログに挿入が挿入されます。

この点:

このログは、返品後にのみ表示されます。

@Transactional(propagation = Propagation.REQUIRES_NEW)である「save500rowchunk」メソッドから戻った後にそれらを受け取る代わりに:

0 投票する
2 に答える
4786 参照

spring - Grails サービスのトランザクション動作

Grails アプリでは、サービス メソッドのデフォルトの動作はトランザクションであり、未チェックの例外がスローされた場合、トランザクションは自動的にロールバックされます。ただし、Groovy では、チェック済み例外の処理 (または再スロー) が強制されないため、サービス メソッドがチェック済み例外をスローすると、トランザクションがロールバックされないというリスクがあります。このため、すべての Grails サービス クラスに注釈を付けることが推奨されるようです。

に他のメソッドがありMyService、そのうちの 1 つは DB を読み取るだけで、もう 1 つは DB に触れないとします。次の注釈は正しいですか?

この質問に答えるには、私の意図が何であるかを知る必要があると思います。

  • いずれかのメソッドから例外がスローされ、進行中のトランザクションがある場合、そのトランザクションはロールバックされます。たとえば、 がwriteSomething()呼び出さdontReadOrWrite()れ、後者から例外がスローされた場合、前者によって開始されたトランザクションはロールバックされます。rollbackForクラスレベルの属性は、明示的にオーバーライドしない限り、個々のメソッドによって継承されると想定しています。
  • 進行中のトランザクションがない場合、次のようなメソッドは開始されません。dontReadOrWrite
  • が呼び出されたときに進行中のトランザクションがない場合readSomething()は、読み取り専用トランザクションが開始されます。読み取り/書き込みトランザクションが進行中の場合、このトランザクションに参加します。
0 投票する
2 に答える
725 参照

spring - Springがトランザクションをインターセプトしないのはなぜですか?

Hibernateとトランザクションを使用したテスト用にSpringを構成しようとしました。@TransactionalトランザクションでマークされたアプリコンテキストからのBeanの取得はインターセプトされません。構成で見逃す可能性があるものは何ですか?

}

0 投票する
1 に答える
1172 参照

spring - 1つのトランザクションで同じデータソースを指す2つの異なるエンティティマネージャーを使用できますか?

JPAでSpringを使用しています。また、異なるエンティティ(1つのアプリケーションの異なるモジュール)を含む2つのEntityManagerがあり、どちらも同じデータソースを指しています。

(単一のTransactionManagerを使用して)1つのトランザクションで両方を使用できますか?そのためにJTAを使用する必要がありますか?もしそうなら、Tomcatの下でそれを使用するための最良のオプションは何ですか?

春に設定するにはどうすればよいですか?

0 投票する
1 に答える
419 参照

hibernate - アトミック性のネストされたトランザクション(Propogation.REQUIRED_NEW / Propogation.NESTED)

まず、JPA2の実装としてSpring+Hibernateを使用していることに注意してください。私のアプリケーションは、JpaTransactionManagerとHibernateJpaDialectで構成されています。

ユニットを非アクティブ化する機能と、複数のユニットの非アクティブ化をラップする機能があります。ユニットの非アクティブ化作業は外部サービスを呼び出し、その呼び出しがタイムアウトするか、エラーステータスで戻ると、例外がスローされます。単一ユニットの非アクティブ化が失敗した場合(この外部サービス呼び出しを介して、またはRuntimeExceptionが原因で)、そのユニットのトランザクションのみをロールバックしたいと思います。

Propogation.REQUIRES_NEWを使用して、基本的に以下のようにこれを実現できます。

そして、これは完全にうまく機能します。

このスタイルは、アクティベーションにも非常によく拡張されます。

しかし、やるときになると問題にreactivationぶつかります。私が欲しいのは、既存の関数と関数reactivationを利用するアトミックタスクです。つまり、またはのいずれかがロールバックを引き起こした場合、関数全体がロールバックします。deactivateUnitactivateUnitdeactivateUnitactivateUnit

これに対する私の素朴な試みはうまくいきません:

activateUnitロールバックする場合は、deactivateUnitしません。

アクティブ化と非アクティブ化の伝播をに変更する必要があるかもしれないと思いましたが、それではNESTED関数のロールバック動作が維持されません。

少し戸惑っていますので、よろしくお願いします!