如
之前的文章提及,更新深度讓我們可以細緻化的控制物件的更新長度,以便在效能和便利上取得平衡,然而也造成下面的問題:
- 設定特定更新深度:程式碼必須知道哪些物件對應的更新深度
- 當更新深度為最大值時,會造成效能低落,沒用到的物件會被無意義的更新
一個解決方法也許是讓 db4o 引擎去幫你作決定。這個功能在 db4o 7.1 版時引入,稱之為「Transparent Persistence」(後文簡稱 TP)。db4o 藉由下面方式來支援 TP:
- 資料庫必須組態成
TransparentPersistenceSupport
- Persistent 類別必須實做
IActivatable
介面,該介面在 db4o 的 Activation一文中有介紹。該介面提供了 bind
方法取得 container 的 activator 物件。 - 當物件的欄位被修改時, db4o 的 Activation一文中提及的
Activate()
方法會被呼叫來儲存物件內容。而 db4o 的 Activation的程式碼中出現的 ActivationPurpose.Write
會在 TP 中被使用。
假設使用在
db4o 的 Activation一文中定義的
Article
物件,我們在開啟資料庫前,先設定好 TP 支援:
Db4oFactory.Configure().Add(new TransparentPersistenceSupport());
只要加上這行,再更新物件內容時,只要該物件欲更新的欄位有加上
ActivationPurpose.Write
,則會被自動儲存。
沒有留言:
張貼留言