所以我向App Engine团队提出的问题始于为什么有时我会这样做:
mgr.makePersistent(obj);
mgr.close()
我可以在15分钟后回来查询同一个对象,发现它中有旧值。他们回答说这是设计的,并且某些实例上的缓存可能永远不会被put清除,这对我来说听起来很奇怪,因为缓存的整个想法不是永远保留旧值,而是用这些值替换更新后的新的权利吗?
所以他们建议我通过在jdoconfig.xml中将其设置为false来关闭javax.jdo.option.RetainValues。
我显然遗漏了一些东西,因为我知道这个属性在他们的所有例子中都设置为true,而我之前从未见过这种行为。感谢您的见解!
更新
我的获取代码如下所示:
PersistenceManager mgr = getPersistenceManager();
MyClass lMyClass = null;
try {
lMyClass = mgr.getObjectById(MyClass.class, id);
} finally {
mgr.close();
}
return object;
我的更新如下:
PersistenceManager mgr = getPersistenceManager();
try {
mgr.makePersistent(lMyClass);
} finally {
mgr.close();
}
return lMyClass;
当我进行更新然后15分钟后获取时,get返回的Java对象中包含旧值。这是一个标准的应用程序引擎应用程序,PMF是一个单例。我可以提供的任何其他细节更有帮助,感谢您的帮助!