Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > hibernate filer and 2-level cache


Автор: gelo86 19.8.2012, 16:38
Есть у меня колешен, который я кеширую:
Код

    private boolean active;

    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    @Filter(name = "active", condition = "active = :active")
    private List<ProductCatalog> childrens = new ArrayList<ProductCatalog>();


Но когда я енайблю филтер, то кеш неработает (потому что cache key несодержит никаких данных про филтер и его параметры). И никаких параметров нету в хибернате чтоби он кешировал данные с филтрами.
У меня многа коллекшынов (+- 7) каторые я кеширую. И в публике я хочю показывать толко активные записи (все 7 обектов имеют boolean active). С филтрам неполучается, мне нужен кеш (99% хитов).

Как посоветуете быть ?
Забыть про lazy loading и руками создовать DTO и филтровать активные записи ?
Или ? smile

Автор: gelo86 23.8.2012, 13:40
Неужели никто неимеет что посоветовать ? :(

Автор: AntonSaburov 23.8.2012, 19:19
Сделай вручную. И что у тебя с русским языком - я ока прочитал, "спотыкался" на каждом втором слове ?

Автор: gelo86 24.8.2012, 10:25
Цитата(AntonSaburov @  23.8.2012,  19:19 Найти цитируемый пост)
И что у тебя с русским языком - я ока прочитал, "спотыкался" на каждом втором слове ? 


Я конечно извеняюсь, но я не из России. Клавиатура латинская,да и граматику никто неучил меня :(

Автор: AntonSaburov 24.8.2012, 19:00
Тоже извиняюсь smile Но похоже, что проще всего сделать кэш ручками.

Автор: Старовъръ 26.8.2012, 14:35
Думаю имеет смысл вместо фильтра подправить запрос и добавить в него нужное условие, а затем включить Query Cache для этого запроса (если и вправду данные редко изменяются).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)