1

我需要优化我正在使用的 POST 请求的读/写计数。

有关请求的一些信息:

  • 用户发送约 100 个项目的 JSON 数组
  • servlet 需要使用单个long属性检查接收到的任何项目是否比数据存储中的对应项更新
  • 我正在使用 JDO

我目前做的是(伪代码):

 foreach(item : json.items) {
     storedItem = persistenceManager.getObjectById(item.key);
     if(item.long > storedItem.long) {
         // Update storedItem
     }
 }

这显然会导致每个请求约 100 个读取请求。

减少此逻辑的读取计数的最佳方法是什么?使用 JDOQuery吗?我读到使用“IN”-查询只会导致多个查询相继执行,所以我认为这对我没有帮助:(

还有PersistenceManager.getObjectsById(Collection)。这有什么帮助吗?找不到任何有关这将发出多少请求的文档。

4

2 回答 2

1

我认为您可以使用以下调用进行批量获取:

Query q = pm.newQuery("select from " + Content.class.getName() + " where contentKey == :contentKeys");   

类似上述查询的内容将返回您需要的所有对象。你可以从这里处理所有其余的事情。

于 2012-05-31T08:53:32.367 回答
0

最好的选择是

pm.getObjectsById(ids);

因为那是为了在调用中获取多个对象(特别是因为你有 id,因此有键)。当然,当前代码(2.0.1 和更高版本)应该为 getEntities() 执行单个数据存储调用。看到这个问题

于 2012-05-31T07:39:30.283 回答