Java Google App Engine上的Datanucleus/JDO二级缓存

Java Google App Engine上的Datanucleus/JDO二级缓存,java,google-app-engine,caching,jdo,datanucleus,Java,Google App Engine,Caching,Jdo,Datanucleus,是否有可能(并且有意义)为Google App Engine数据存储使用JDO 2级缓存 首先,为什么谷歌的网页上没有这方面的文档?有什么问题吗?我们是否需要设置限制来保护memcache配额 根据,可以设置以下持久性属性: datanucleus.cache.level2.type=javax.cache datanucleus.cache.level2.cacheName={cache name} 就这些吗?我们可以选择任何缓存名称吗 在Internet上使用不同的设置报告 另外,我们

是否有可能(并且有意义)为Google App Engine数据存储使用JDO 2级缓存

首先,为什么谷歌的网页上没有这方面的文档?有什么问题吗?我们是否需要设置限制来保护memcache配额

根据,可以设置以下持久性属性:

 datanucleus.cache.level2.type=javax.cache
 datanucleus.cache.level2.cacheName={cache name}
就这些吗?我们可以选择任何缓存名称吗

在Internet上使用不同的设置报告


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

二级缓存和GAE/J没有已知的问题。如果人们有问题,也许他们应该向谷歌报告。将缓存名称设置为所需的名称。显然,放入memcache的任何内容都必须是可序列化的,因为memcache就是这样做的。是的,您需要datanucleus缓存插件(1.x版),并将其放置在与任何其他DN JAR相同的位置。有一天,谷歌将更新为使用DN 2.x,但似乎出现了问题:我尝试过(使用JPA),但我得到了其他人已经报告的错误:

在你解决这个问题之前,你必须回答一个问题:

您使用的是哪个版本的DataNucleus?

这篇文章的所有内容都与插件的旧版本v1有关。直到最近,googlepluginforeclipse才支持AppEngine的DataNucleus插件v2(它基本上是AppEngine和DataNucleus核心之间的管道)

我建议升级到AppEngine的Datanucleus插件的v2——如果您使用Eclipse,这很容易——它有一个UI,允许您选择v1或v2。只需转到您的项目属性,找到应用程序引擎设置并查找“Datanucleus JDO/JPA版本”

另外,您必须更改
jdo config.xml
。具体而言,您只需更改一个属性:

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

所以——一旦升级到v2,这就是指定缓存的方式(添加到jdoconfig.xml):



此时,每次使用PersistenceManager进行放置和获取时,缓存都应该自动发生。万岁

为什么实体类必须是可序列化的?DataNucleus已经可以将其转换为一个低级别的datastore.Entity,它已经可以序列化了。你有什么进展吗?我正试图在使用JDO 2级缓存和google文档提到的JCache实现之间做出选择,但似乎没有关于这个主题的文档/讨论。我哪儿也没去。我正在考虑使用低级数据存储API(或除此之外的其他库)。JDO对我来说太像一个黑匣子了。我们似乎属于一个不快乐的大俱乐部。小贴士:1。下载JAR2的1.1.1版。将这些添加到jdoconfig.xml中:datanucleus.cache.level2.type=javax.cache datanucleus.cache.level2.cacheName={cache name}3。使任何您想要的缓存可序列化4。调用makePersistent来缓存任何您想要缓存的内容,即使它已经是持久的。5.将所有内容包装到事务中(这是必需的,因为它使用异步JCache),请参见:
<property name="datanucleus.cache.level2.type" value="jcache"/>
<property name="datanucleus.cache.level2.cacheName" value="NameItWhateverYouWant"/>