Google App Engine上的Datanucleus / JDO Level 2缓存

时间:2010-01-06 07:19:24

标签: java google-app-engine caching jdo datanucleus

对于Google App Engine数据存储使用JDO 2级缓存是否可行(并且有意义吗?)

首先,为什么Google的网页上没有关于此的文档?它有一些问题吗?我们是否需要设置限制来保护我们的memcache配额?

根据DataNucleus on Stackoverflow,您可以设置以下持久性属性:

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

这就是全部吗?我们可以选择任何缓存名称吗?

使用不同设置在互联网上报告

Other sources

此外,我们似乎需要下载DataNucleus Cache support plugin。哪个版本合适?我们只是将它放在WEB-INF/lib中还是需要更多设置来激活它?

3 个答案:

答案 0 :(得分: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时都会自动进行缓存。万岁!

答案 1 :(得分:1)

与L2缓存和GAE / J无关的任何已知问题。如果人们有问题,那么也许他们应该向Google报告。将缓存名称设置为您希望的名称。显然,放入内存缓存的任何内容都必须是Serializable,因为这就是memcache所做的事情。是的,您需要datanucleus-cache插件(版本1.x),并将其放在与任何其他DN jar相同的位置。有一天谷歌将更新为使用DN 2.x

答案 2 :(得分:0)

似乎有问题:我尝试过(使用JPA)并且我收到了其他人已经报告过的错误:http://code.google.com/p/datanucleus-appengine/issues/detail?id=163