是否有重用Morphia查询的良好模式?

时间:2012-03-05 16:25:43

标签: java performance mongodb morphia

我刚刚对一些代码进行了分析,我使用以下代码增加了一些频率计数器:

   Datastore ds = ...
   final Query<Unit> query = ds.createQuery(Unit.class);
   query.field("text").equal(text);
   query.field("langCode").equal(lang.getCode());
   UpdateOperations ops = ds.createUpdateOperations(Unit.class);
   ops.inc("frequency", value);
   ds.update(query, ops, false);

查询的创建花费了近50%的执行时间,我想以某种方式重用该工作。在ThreadLocal中保存queryops对象是否安全,只需再次调用query.field("text").equal(text)来替换“text”字段?看起来验证占据了总时间的30%左右。

1 个答案:

答案 0 :(得分:3)

是的,你可以这样做。每个字段都存储在一个映射中,因此在多次调用时它将替换它。