3

是否可以(并且有意义)将 JDO 2 级缓存用于 Google App Engine 数据存储区?

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

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

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

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

Internet 上的其他 来源报告使用不同的设置。

此外,我们似乎需要下载DataNucleus Cache 支持插件。哪个版本合适?我们只是把它WEB-INF/lib放进去还是需要更多的设置来激活它?

4

3 回答 3

3

在弄清楚这一点之前,您必须回答一个问题:

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

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

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

另外,您必须更改您的jdo-config.xml. 具体来说,您只需更改一个属性:

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

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

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

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

于 2012-12-26T20:05:12.073 回答
1

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

于 2010-01-06T14:11:52.150 回答
0

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

于 2010-02-08T16:23:52.437 回答