DB4o更新vs插入

时间:2013-09-18 16:29:27

标签: persistence db4o object-oriented-database

假设您正在使用具有标准配置和开箱即用的DB4O,这意味着您正在使用DB4O的标准内部ID方案,如下所示**。

首先,作为假设,当将对象更新或插入数据库时​​,程序员只有一个选项,称为“objectContainer.store(object)”。

现在,DB4O如何知道是更新数据库中的现有对象,还是插入一个全新的对象?我的猜测是,DB4O会查看对象的内部id是否为空。

但是,我还可以看到程序员首先从数据库中提取对象,然后更新它的负担。 所以我的问题是,如何在不首先将其拖入Java内存的情况下可靠地更新DB4O数据库中的对象?

*这篇DB4O文章并没有真正回答我的问题

http://community.versant.com/Documentation/Reference/db4o-8.1/java/reference/Content/basics/update_concept.htm

**这是非常有用的信息:

http://community.versant.com/documentation/Reference/db4o-8.1/java/reference/Content/platform_specific_issues/disconnected_objects/comparison_of_ids.htm

1 个答案:

答案 0 :(得分:1)

db4o使用对象标识来决定是否插入/更新对象(而AFAIK这是db4o中的一个核心概念)所以即使有可能,也没有简单的方法可以在db4o级别完成(你可能有您的数据层访问的抽象;您可以做的是在此层中有两个方法:insert和update;在update中,在调用db4o.store()之前,您可以检查对象是否已经加载。至少你可以避免在你的数据库中导致对象重复的错误。如果你在插入中做同样的事情,你可以确定你不会错误地更新对象。

希望得到这个帮助。