という名前の EJB メソッドが、 という名前Aby
の別の EJB メソッドを呼び出します。Bob
Bob
でマークされています@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
トランザクションはいつbob
コミットされますか?:
a)bob
呼び出しが終了したとき
b)aby
呼び出しが終了したとき
c) その他。いつ?
という名前の EJB メソッドが、 という名前Aby
の別の EJB メソッドを呼び出します。Bob
Bob
でマークされています@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
bob
コミットされますか?:a)bob
呼び出しが終了したとき
b)aby
呼び出しが終了したとき
c) その他。いつ?
私はAが正しいと思います。メソッド Bob が呼び出されると、新しいトランザクションが作成され、Bob トランザクションがコミットされるまでメソッド Aby が中断されます。
また、トランザクション対応にするためには、他の Bean のメソッドでなければならず、同じ Bean から呼び出されたメソッドはビジネス メソッドとしては機能しないことに注意してください。
詳細については、このすばらしい記事を参照してください。
実際には、選択肢 a が正しいと思います。見る:
EJB 3.0 - ネストされたトランザクション != 新規が必要?
また、いくつかの調査を行い、db (Hyper Sonic) ログを調べて、db でいつコミットされ、REQUIRES_NEW メソッドが終了したときにコミットされるかを実際に確認しました。ただし、トランザクションを処理するのはコンテナー次第であるため、コンテナーによって異なる可能性があります。これをデバッグするときにJBossを使用しました。そしてHibernate(dbログをチェックしてこれをテストしたので言及する価値があります)。トランザクションについて質問されているので、データベースへの書き込みが関係していると思います。
前回の回答とは私の考えが違うので、説得されると楽しいです。