Есть ли хороший шаблон для повторного использования запросов Morphia? - PullRequest
5 голосов
/ 05 марта 2012

Я только что профилировал некоторый код, где я увеличивал некоторые счетчики частоты следующим кодом:

   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% времени выполнения, и я хотел бы как-то повторно использовать работу. Безопасно ли сохранять объекты query и ops в ThreadLocal и просто вызывать query.field("text").equal(text) снова, чтобы заменить поле «текст»? Также похоже, что проверка занимает около 30% от общего времени.

1 Ответ

3 голосов
/ 05 марта 2012

Да, вы можете сделать это. Каждое поле хранится на карте, поэтому оно будет заменено при многократном вызове.

...