2010-01-06 52 views
3

對Google App Engine數據存儲區使用JDO Level 2緩存是否可能(並且有意義)?Google App Engine上的Datanucleus/JDO Level 2緩存

首先,爲什麼Google的網頁上沒有關於此的文檔?它有一些問題嗎?我們是否需要設置限制來保護我們的內存緩存配額?

DataNucleus on Stackoverflow,您可以設置以下持久性:

datanucleus.cache.level2.type=javax.cache 
datanucleus.cache.level2.cacheName={cache name} 

是這樣嗎?我們可以選擇任何緩存名稱嗎?

Othersources因特網報告使用不同的設置。我們需要下載DataNucleus Cache support plugin。哪個版本適合?我們只是把它放在WEB-INF/lib還是需要更多的設置來激活它?

+0

你有沒有得到這個地方?我試圖在使用JDO 2級緩存和谷歌文檔提到的JCache實現之間作出決定,並且似乎缺乏關於此主題的文檔/討論。 – tempy 2010-03-23 23:40:44

+1

不,我沒有得到任何地方。我正在考慮使用底層數據存儲API(或者頂層的其他庫)。 JDO對我來說太過黑匣子了。 – Thilo 2010-03-24 01:18:40

+1

我們似乎屬於一個大的,不開心的俱樂部=/ – tempy 2010-03-24 18:19:29

回答

1

與L2緩存和GAE/J無關的任何已知問題。如果人們有問題,那麼也許他們應該向Google報告。將緩存名稱設置爲所需的值。任何放入memcache的東西都必須是Serializable,因爲這是memcache的功能。是的,您需要datanucleus-cache插件(版本1.x),並將它放在與其他DN罐子相同的地方。有一天,谷歌將更新爲使用DN 2.X

+0

爲什麼實體類必須是可序列化的? DataNucleus已經可以將它變成一個低級數據存儲實體,它已經是Serializable了。 – Thilo 2010-01-08 23:40:18

3

之前,你可以算出來,你必須回答一個問題:

你正在使用哪個版本的DataNucleus?

這篇文章的一切都與舊版本的插件v1有關。直到最近,Google Plugin for Eclipse才支持AppEngine的DataNucleus插件v2(這基本上是AppEngine和DataNucleus Core之間的管道)。

我建議升級到AppEngine Datanucleus插件的v2版本 - 如果您使用Eclipse,很容易 - 它有一個用戶界面,它允許您選擇v1或v2。只需轉到您的項目屬性並找到App Engine設置並查找「Datanucleus JDO/JPA版本」。您需要對jdo-config.xml進行更改。特別是,你必須改變一個屬性:

<property name="javax.jdo.PersistenceManagerFactoryClass" value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory"/> 

SO - 只要你已經升級到v2,你這是怎麼指定緩存(一種除jdoconfig.xml):

<property name="datanucleus.cache.level2.type" value="jcache"/> 
<property name="datanucleus.cache.level2.cacheName" value="NameItWhateverYouWant"/> 

此時,每次放入並使用PersistenceManager時都應自動進行緩存。萬歲!