オプティミスティック トランザクションを使用するシステムで、Java 疑似コードの次の 2 つのブロックを考えてみましょう。
例 A :
try {
txn.begin();
// database operations
txn.commit();
}
catch (Exception e) {
txn.rollback();
}
例 B
txn.begin();
// database operations
try {
txn.commit();
}
catch (Exception e) {
txn.rollback();
}
私たちのコードでは、トランザクションが双方向で実行されていることがわかります。私はAが正しいと確信しています。私の直感では、Bが間違っていることがわかりますが、Bは try ブロックにあり、エラーが発生した場合にキャッチしてロールバックできるため、Bに害はないようです。Bが正しいcommit()
かどうか、またその理由を説明してください。ありがとう!
編集:だから、私が探している答えが本当に得られていません。Bがどういうわけか「悪い」ことは既に知っています。私が探しているのは、B が悪い理由です。つまり、 Bが失敗する場所でAが機能する可能性のある状況はありますか?
-tjw