Давайте у меня будет такая таблица:
ID |ПРЕЙД |VALUE
, в котором ID является ПЕРВИЧНЫМ КЛЮЧОМ и PREID - это поле, часто запрашиваемое вместо ID сама.
ПОМЕЩЕНИЕ:
Все значения приведенных выше таблиц ТОЛЬКО ДЛЯ ЧТЕНИЯ
ВОПРОС
Какова лучшая стратегия для работы с такими таблицами, используя EHCACHE 2.6?
Я думаю о двух стратегиях:
Простоиспользуйте кэш 2-го уровня и избегайте использования пользовательского кеша, однако кеш этого уровня работает только при запросе PK: для использования кеша при запросе столбца PREID мне, вероятно, потребуется использовать:
query.setCacheable (true)
Настройте элемент кеша внутри ehcache.xml и используйте менеджер кеша, вручную выставив все значения следующим образом:
for (Entity item : list) {
cache.put(new Element(item.getPk(), item));
}
и затем используйте getSearchAttribute (..)
final Attribute<Object> preid = cache.getSearchAttribute("preid");
Query query = cache
.createQuery()
.includeAttribute(preid)
.addCriteria(preid.eq("some_pre_id"))
.end();
Results results = query.execute();
Но у меня есть некоторые сомнения относительно необходимости ручного ввода всех значений вперед запросом.
Мой вопрос: есть ли альтернативная стратегия для достижения этой цели?Что лучше между двумя подходами?