我需要优化我正在使用的POST请求的读/写次数。
有关请求的一些信息:
long
属性检查任何收到的项是否比数据存储区中的对应项更新我目前所做的是(伪代码):
foreach(item : json.items) {
storedItem = persistenceManager.getObjectById(item.key);
if(item.long > storedItem.long) {
// Update storedItem
}
}
这显然会导致每个请求有~100个读取请求。
减少此逻辑的读取计数的最佳方法是什么?使用JDO Query
?我读到使用“IN”-Queries只会导致多个查询一个接一个地执行,所以我认为这不会对我有所帮助:(
还有PersistenceManager.getObjectsById(Collection)
。这有什么用?无法找到有关这将发出多少请求的任何文档。
答案 0 :(得分:1)
我认为您可以使用以下调用来执行批量获取:
Query q = pm.newQuery("select from " + Content.class.getName() + " where contentKey == :contentKeys");
上述查询之类的内容将返回您需要的所有对象。 你可以从这里处理所有其余的事情。
答案 1 :(得分:0)
最好的选择是
pm.getObjectsById(ids);
因为它用于在调用中获取多个对象(特别是因为你有id,因此键)。当然,当前代码(2.0.1及更高版本)应该为getEntities()执行单个数据存储区调用。见this issue