我正在学习db4o数据库,我打算使用它的三层项目。Db4o和对象标识
我不完全理解db4o中对象标识的概念。
假设我们有这样一个类:
public class User
{
public Guid Id;
public String SomeString;
public Int64 SomeInt;
public DateTime SomeDate;
public DateTimeOffset SomeDateOffset;
public TimeSpan SomeTimeSpan;
public User SomeUser;
}
我从DB型用户的负载对象,并改变了它的所有成员的新实例。 Db4o将如何确定如何处理成员,何时更新(替换)以及何时存储新实例?
根据手册和身份概念,我的根对象引用保持不变,因此根对象是更新的,所有成员对象都有一个新的引用,所以它插入新的引用实例,但在这种情况下,我们有空间泄漏,类型为String,DateTime,TimeSpan,User等的旧实例仍保留在数据库中。
我们可以假设它删除了孤立的对象(不被任何人引用),但是根用户对象它没有被任何人引用,如果我存储了纯的DateTime对象或Int32对象呢?它会标记这样的明确存储的对象beeing“垃圾收集”?这只是我的推测,有人能解释这实际上是如何工作的吗?
我似乎无法在文档中找到Db4o认为“原始”类型的类型列表。 –