2013-07-29 57 views
0

*對不起任何複式 - 不是肯定的入門計算器怎麼會,而不是在DataNucleus將論壇中的條目* ** * ** * **DataNucleus將 - L1高速緩存,分離

大家好 -

我們一直在使用DN(DataNucleus將)在過去的幾個月裏,它看起來不錯。

但是,在閱讀文檔時我感到困惑,需要一些幫助。

場景:

我有一個類,它包含幾個字段(如主鍵,姓名,年齡等)和B類的列表(可以說類地址)。

我做了兩個@PersistenceCapable(detachable =「true」),並且還爲List提供了@Persistent和@Join的註解,其中defaultFetchGroup = true和recursionDepth = -1。

現在,在一個DAO層 - 我得到了ClassA的列表,並且關閉了PM;這個對象然後被交給另一個類/方法進行一些處理。基於我的理解和閱讀,我認爲在detachable =「true」的情況下,我可以在PersistenceManager(PM)關閉後讓此實例處理。

但是,似乎我只能這樣做,如果我沒有將Level1緩存設置爲無。如果我將它設置爲none,那麼在PM關閉後,我無法獲得除主鍵以外的ClassA的任何字段。我不斷收到經理關閉異常。

我之所以設置1級高速緩存中沒有一個幫助我們的系統也做批量插入平行於沒有臃腫的緩存和JVM堆。

我在正確的軌道上嗎?或者我的理解是關閉的?你可以提供什麼建議來解決這種情況? (不必有兩個單獨的JVM進程 - 一個用於批量插入,一個用於查詢和讀取)

我希望我是清楚我的問題。

非常感謝!

Regards,

Mike。

回答

1

關閉管理JDO的PM直到在容器的請求範圍內完成它爲止是不理想的。我的第一個建議是在你完成之前保持開放。

有沒有「自動分離」在默認情況下,你必須調用pm.detachCopy()之前關閉()或設置屬性datanucleus.DetachOnClose。在分離的副本上執行的任何更改都不會反映在您的數據存儲中,直到您將其與新的PM保留爲止。

+0

你能解釋datanucleus.DetachOnClose屬性的工作原理嗎?當我調用'pm.close()'的時候,手中的對象會不會分離出來,就是這樣?! –

+0

請參閱http://www.datanucleus.org/products/accessplatform/jdo/attach_detach.html – TheArchitect