-1

データベース/リソースごとに 1 つの書き込みトランザクションのみを保証するために、他の JVM がセッションを開始できないようにする .lock ファイルを作成しています。

ただし、アプリケーションがクラッシュした場合、たとえば Eclipse でどのように処理されるかはわかりません。ファイルを手動で削除する必要があったと思いますか?! それで、これは一般的な解決策ですか、それとも他の解決策は存在しますか? (クラッシュ後に) 再起動されたアプリケーションは、通常のアプリケーションと区別できないと思います。これは、ロックを削除する必要があるという適切なメッセージが表示されなかった Eclipse で 1 つか 2 回悩まされたことの 1 つだと思います。 Eclipse を再起動する前にファイルを削除します。しかし、それが問題だったのかどうかはよくわかりません。

わかりました、適切にコミットされたトランザクションのために削除されたトランザクション ログをチェックする必要がある書き込みトランザクションの別の解決策があるかもしれません。しかし、まあ、書き込みトランザクションはチェックに使用されます。他の解決策はありますか?何も思いつかない...

4

2 に答える 2

1

データベースは長い間、トランザクションと分離を処理してきました。なぜこの車輪を再発明する必要があるのか​​ 理解できません。JTAについて聞いたことがありませんか?

Spring とそのトランザクション マネージャーをご覧ください。この問題は、他の人によってよりよく解決されています。

更新: NoSQL は、設計上、ACID がないことを意味します。ACID が必要な場合は、NoSQL を使用しないでください。不十分な設計決定を補うために複雑さを追加しています。

Eclipseはこれと何の関係がありますか? それはIDEです。ユーザーがアプリを実行するために IDE を起動する必要はないと思います。

于 2012-09-23T21:08:18.620 に答える
0

あなたは本当にこの弾丸をかわすように努めるべきです。

しかし、昔のトランザクションを使用できる dbms を使用している場合、これはアプリケーションまたはユーザー ロックの 1 つのトリックでした。

applicationLocks などのテーブルを作成してから、トランザクションを開始し、特定のレコードを挿入/更新しますが、コミットはしません。行がロックされているため、後に来る他の人はできません。適切なアクションを実行します。

アプリケーションが閉じたら、ロールバックします。

アプリケーションがクラッシュした場合、接続は閉じられ、トランザクションはとにかくロールバックされます。

于 2012-09-23T21:41:29.550 に答える