Несколько настроек кэша второго уровня с одним отображением Hibernate - PullRequest
2 голосов
/ 20 декабря 2011

Предположим, что есть несколько приложений Java, которые совместно используют общий модуль сущностей (классы сущностей + отображения Hibernate XML).В настоящее время для объектов не разрешено кэширование (нет элементов <cache.../> в отображениях).

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

Теперь реализовано новое приложение, которое

  1. должно использовать те же сопоставления сущностей
  2. , но должно использовать 2-й уровень и кэш запросов.

Как настроить кэш?

Несколько наблюдений:

  1. Я не могу добавить <cache.../> элементов в сопоставления, так как это может привести к разрывудругие приложения, которые не настраивают такой кэш и которые не находятся под моим влиянием:

    Second-level cache is not enabled for usage [hibernate.cache.use_second_level_cache | hibernate.cache.use_query_cache]

  2. Я не могу найти способ активировать объект для кэширования внеего картирования.Настройка области кэша для сущности в ehcache.xml не помогает
  3. Даже если бы я мог изменить все другие приложения и добавить <cache.../> в сопоставления сущностей, он не работает, чтобы отключить кеш путем установкиhibernate.cache.use_second_level_cache=false хотя это сказано в http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html, таблица 3.5

1 Ответ

1 голос
/ 20 декабря 2011

Похоже, вы можете использовать элементы <class-cache> для настройки кэширования в hibernate.cfg.xml, а не в сопоставлениях сущностей, см. 3.8.XML-файл конфигурации .

Полагаю, вы можете позволить себе создать пользовательский hibernate.cfg.xml, который будет использовать существующие сопоставления, а если нет, то есть Configuration.setCacheConcurrencyStrategy() методы, которые также могут помочь.

...