Ehcache против реализации кэша статической карты

У меня есть несколько таблиц с очень небольшим количеством записей в них, и они никогда не будут меняться динамически. поэтому я хочу кэшировать всю таблицу в памяти, чтобы уменьшить нагрузку на БД. Я могу легко добиться этого с помощью статической карты и заполнения карты в статическом блоке.

мне было интересно, возможно ли то же самое более эффективным способом с помощью Ehcache + hibernate?


person dpsdce    schedule 25.05.2011    source источник
comment
Можете ли вы предоставить простые реализации карт для кеша?   -  person Rachel    schedule 31.01.2012
comment
просто объявите общедоступную статическую карту, добавьте значения, которые вы хотите кэшировать на карте, и запустите поток, который будет обновлять эту карту каждые 12 часов или что-то в этом роде.   -  person dpsdce    schedule 02.02.2012
comment
Спасибо, новичок, я реализовал статическую карту, но не обновляю ее каждые 12 часов. Буду разбираться, если есть необходимость.   -  person Rachel    schedule 02.02.2012


Ответы (2)


Преимущество реального кеша второго уровня перед статической картой заключается в том, что вы получаете преимущество доступа в памяти, сохраняя тот же способ определения, доступа и обхода ваших сущностей: с помощью сеанса Hibernate (или диспетчера сущностей).

Вы можете сохранять отношения с другими сущностями (даже не кешированные); вы можете использовать кэш запросов и по-прежнему выполнять запросы к этим объектам (и результаты этих запросов также будут кэшироваться).

Короче говоря, он прозрачен, предлагает больше возможностей, как сказал Божо, и его намного проще использовать, поскольку кэшированные объекты используются так же, как и другие объекты.

person JB Nizet    schedule 25.05.2011
comment
я согласен с тем, что использование Ehcahe сохранит единообразие кода (то, как мы получаем доступ к другим объектам), но есть ли способ предварительно заполнить ecache при запуске сервера, как я могу сделать в реализации карты статическим блоком для первоначального заполнения карты? - person dpsdce; 25.05.2011
comment
Выполнение запроса HQL, загружающего все объекты, должно помочь: выберите c из CachedEntity c. - person JB Nizet; 25.05.2011

Ehcache имеет гораздо больше возможностей, чем Map:

  • ограничить максимальное количество элементов в памяти
  • переполнение на диск (если превышено указанное выше число)
  • установить время жизни и время простоя для элементов
  • разрешает репликацию внутри кластера

Если вам ничего из этого не нужно, вы можете смело использовать карту — ее будет проще настроить.

person Bozho    schedule 25.05.2011