ehcache, правильное использование поиска - PullRequest
0 голосов
/ 19 февраля 2019

Давайте у меня будет такая таблица:

ID |ПРЕЙД |VALUE

, в котором ID является ПЕРВИЧНЫМ КЛЮЧОМ и PREID - это поле, часто запрашиваемое вместо ID сама.

ПОМЕЩЕНИЕ:

Все значения приведенных выше таблиц ТОЛЬКО ДЛЯ ЧТЕНИЯ

ВОПРОС

Какова лучшая стратегия для работы с такими таблицами, используя EHCACHE 2.6?

Я думаю о двух стратегиях:

  1. Простоиспользуйте кэш 2-го уровня и избегайте использования пользовательского кеша, однако кеш этого уровня работает только при запросе PK: для использования кеша при запросе столбца PREID мне, вероятно, потребуется использовать:

    query.setCacheable (true)

  2. Настройте элемент кеша внутри 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();

Но у меня есть некоторые сомнения относительно необходимости ручного ввода всех значений вперед запросом.

Мой вопрос: есть ли альтернативная стратегия для достижения этой цели?Что лучше между двумя подходами?

...