0

我发现没有提交的调用存储或没有存储的调用提交都可以将数据写入磁盘。在我看来,store 用于更新容器中的对象或将新创建的 obj 放入容器中。commit 做磁盘写工作。

我没有使用 TP & TA,我设置了足够的 updateDepth & minimumActivationDepth 级别。我观察到,当我调用 store(obj) 时,会调用 java.io.RandomAccessFile 方法。数据应写入磁盘。

那么创建 2 个功能的目的是什么:存储和提交?为什么不只制作一个 api,比如: save() ?

4

1 回答 1

0

这些方法有两个不同的任务:

Store():告诉 db4o 你想存储/更新这个对象。但是,这仅列出对事务的更改。

Commit():使所有更改永久化并开始一个新事务。如果没有提交调用,Store 方法将不起作用。(注意 .commit 被 close/dispose 隐式调用)。如果您认为发生了错误或错误,您可以调用 .Rollback 来撤消所有更改。

你可以在网上阅读更多关于交易的信息,还有大量的例子。

这没什么特别的,许多数据库都使用这种语义。几乎所有的 SQL、Object 和其他数据库。

于 2012-08-21T14:00:20.940 回答