0

コミットなしのコールストアまたはストアなしのコールコミットはどちらもデータをディスクに書き込むことができることがわかりました。私の意見では、storeはコンテナ内のオブジェクトを更新したり、新しく作成されたobjをコンテナに入れたりするために使用されます。コミットはディスク書き込みジョブを実行します。

TPとTAを使用していません。十分なupdateDepthとminimumActivationDepthレベルを設定しました。store(obj)を呼び出すと、java.io.RandomAccessFileメソッドが呼び出されることがわかりました。データはディスクに書き込む必要があります。

では、保存とコミットという2つの関数を作成する目的は何ですか?なぜ単一のAPIを作成しないのですか?たとえば、save()?

4

1 に答える 1

0

これらのメソッドには、2 つの異なるタスクがあります。

Store(): このオブジェクトを保存/更新することを db4o に伝えます。ただし、これはトランザクションへの変更を登録するだけです。

Commit(): すべての変更を永続化し、新しいトランザクションを開始します。commit 呼び出しがなければ、Store メソッドは効果がありません。(.commit は close/dispose によって暗黙的に呼び出されることに注意してください)。間違いやエラーが発生したと思われる場合は、代わりに .Rollback を呼び出して、すべての変更を元に戻すことができます。

ネット上のトランザクションについて詳しく読むことができ、たくさんの例があります。

これは特別なことではなく、多くのデータベースがこの種のセマンティクスを使用しています。ほぼすべての SQL、オブジェクト、およびその他のデータベース。

于 2012-08-21T14:00:20.940 に答える