我正在學習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認爲「原始」類型的類型列表。 –