2012-07-11 60 views
2

我想知道是否有任何方式使用db4o延遲加載對象? 我閱讀了所有教程,似乎這個功能不存在。使用db4o進行延遲加載

讓我們清楚我的觀點。 例如,假設我有一個包含50個複雜字段的House對象。

House 
1) location : Country (complex object) 
2) window : Window (complex object) 
3) livingRoom : Room (complex object) 
    . 
    . 
    . 
50) door : Door (complex object). 

比方說,在我的程序的某個地方,我只需要房子的位置。 如果我打開db4o的透明激活機制,當我訪問位置字段時,整個房屋對象是 已激活,這意味着所有字段都填充了值。 這很愚蠢,因爲所有其他大而複雜的領域(我不會在這種情況下使用)從數據庫中無用且昂貴地檢索。

如果我有一種方法可以告訴db4o完全激活一個對象或根據我的需要激活對象的某些字段,那將會很好。

回答

0

如果我正確理解了你的話,db4o的透明激活應該足以實現你想提供的所有「子對象」也實現Activatable接口(當然,你還添加了TransparentActivationSupport到配置)。

因此,在您的示例中,當房屋被激活時,其所有字段將變爲非空,但不會被激活;只有當你訪問這些領域,他們應該被激活。

你可以發佈代碼(或簡單的測試),導致你相信所有的對象被激活?

最好