0

最近のインタビューで、インタビュアーは私に質問をしました. 以下は質問です -

リクエストがサーブレットに送信され、サーブレットがいくつかの DB トランザクション (最初の更新とコミット、次に読み取りと更新、再度コミット) を実行するとします。これには約 3 ~ 4 分かかります。その間にユーザーがキャンセル ボタンを押すと、接続が確立されます。失った。トランザクション全体をどのようにロールバックしますか。

私の答えは - サーブレットが IOException をスローするので、例外を処理してトランザクションをロールバックできます。

しかし、彼は、すでに行われている DB コミットについて、どのようにロールバックしますか、と私に質問しました。

私は空白で、そのような状況に遭遇したことはないと答えました。しかし、そのような状況で何ができるかを本当に知りたいです。

ありがとう。

4

1 に答える 1

0

しかし、彼は、すでに行われている DB コミットについて、どうやってそれをロールバックするのか、私に質問しました。

サーブレット関連の質問ではなかったと思います。トランザクションがデータベースでコミットされた場合、ロールバックできません。データベース トランザクションには、ACID (原子性、一貫性、分離、耐久性) と呼ばれるいくつかのプロパティがあります。この場合に適用されるのはDurabilityです。

「耐久性は、コミットされたトランザクションが永続的に存続することを保証する ACID プロパティです」

于 2013-10-01T14:33:45.147 に答える