2

私は、JTA (Java Transactions API) と .NET の対応する System.Transactions の間のさまざまな動作を分析しています。この 2 つの間ではアプローチがまったく異なります。Transactions実際、Java のバージョンの Transactions はどちらかというと仕様のように見え、定義された、TransactionManagerおよびその他のインターフェースのいずれかを実装する義務は開発者に委ねられています。.NET にはより具体的な実装があり、開発者が独自のTransactionオブジェクトを定義することはできませんが、トランザクションの有効期間中に管理されるリソースを処理するためのインターフェイスを提供します (Java は同じ目的でいくつかの XTA* インターフェイスを提供します)。

  • JTA を使用する Java コードを .NET に移植する機会があった人がいるかどうか、また、主な違いに気付いた人がいるかどうか疑問に思っています。

  • さらに、 (JTAで)TransactionManager.setRollbackOnly反対の振る舞いを誰かが明確にしてくれますか?TransactionManager.rollback.NET バージョンには、Transaction.Rollbackより必須のメソッドだけがあります。

4

1 に答える 1

1

rollback() は、実際のロールバック コマンドを基になるリソースに送信します。setRollbackOnly() は、コミットするかロールバックするかを決定するときに読み取られる現在のトランザクションにマーカーを配置します。setRollbackOnly() が呼び出されると、唯一の可能な結果はロールバックですが、setRollbackOnly() が呼び出されているときに実際にはロールバック呼び出しは行われません。

それが両方の方法の背後にある考え方です。異なる実装がこの区別をどこまで行っているかはわかりません. setRollbackOnly() が呼び出されたときに実際にロールバックを実行したとしても、実際には何の違いもありません.

于 2009-05-03T22:33:22.120 に答える