假设您使用的是标准配置和开箱即用的DB4O,那么您使用的是DB4O的标准内部id方案,如下所示。
首先,假设在更新对象或将对象插入数据库时,程序员只有一个选项,即调用“objectContainer.store(对象)”。
现在,DB4O如何知道是更新DB中现有的对象,还是插入一个全新的对象?我的猜测是,DB4O会查看对象的内部id是否为空。
但是,我也看到了这样的可能性:程序员首先从DB中提取对象,然后更新对象。因此,我的问题是,如何才能可靠地更新数据库中的对象而不首先将其拖到DB4O内存中?
*这篇DB4O文章并没有真正回答我的问题
concept.htm
**这是非常翔实的:
ids.htm
发布于 2013-09-19 09:29:39
db4o使用对象标识来决定是否插入/更新对象( AFAIK --这是db4o中的一个核心概念),因此,即使有可能,在db4o级别也没有实现这一目标的简单方法(您可能有数据层访问的抽象;您可以做的是在这一层中有两个方法: insert和update;在update中,在调用db4o.store()之前,您可以检查对象是否已经加载。这样,至少可以避免导致数据库中对象重复的错误。如果在insert中执行相同的操作,则可以确保不会错误地更新对象。
希望能帮上忙。
https://stackoverflow.com/questions/18877548
复制相似问题