Подтвердить что ты не робот

Почему EhCacheProvider устарел?

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

Я добавил зависимость от ehcache:

   <dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-core</artifactId>
    <version>2.2.0</version>
   </dependency>

Я думаю, что класс провайдера, который я хочу использовать, это:

net.sf.ehcache.hibernateEhCacheProvider

Когда я смотрю ссылки на библиотеки в eclipse, я вижу аннотацию @Deprecated на EhCacheProvider, а также на SingletonEhCacheProvider. Что дает? Есть ли обновляющий поставщик, который я могу использовать?

Я использую hibernate версии 3.4.0.GA, если это имеет значение.

4b9b3361

Ответ 1

Что дает? Есть ли обновляющий поставщик, который я могу использовать?

Они устарели в пользу классов, реализующих новый SPI Hibernate 3.3/3.5 с его CacheRegionFactory. Эти реализации соответствуют:

  • net.sf.ehcache.hibernate.EhCacheRegionFactory
  • net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory

Преимущества нового SPI включают:

  • SPI удалил синхронизацию в сантехнике Hibernate. это до реализации кэширования о том, как контролировать параллельный доступ. Ehcache, начиная с 1,6, удален синхронизация в пользу CAS подход. Результаты для тяжелых рабочие нагрузки впечатляют.
  • Новый SPI обеспечивает более мелкий контроль над хранилищем области кэша и кэш-стратегии. Ehcache 2.0 принимает Преимущество этого - уменьшить память использовать. Он обеспечивает только чтение, нестрогий читать писать и читать стратегии написания, все кластеры безопасны.
  • Ehcache 2.0 легко распространяется с Terracotta Server Array. Эта обеспечивает безопасную работу в кластере (когерентность), HA и масштаб за пределами пределов кэша в процессе, который как большинство пользователей Hibernate используют Эхаче сегодня. Существует существующая ehcache.jar и ehcache-terracotta.jar который предоставляет клиентскую библиотеку. (...)

Таким образом, вам предлагается использовать новые реализации. Конфигурация выполняется с помощью следующего свойства:

<property name="hibernate.cache.region.factory_class">
    net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
</property>

Это заменяет свойство hibernate.cache.provider_class.

Ссылки

Ответ 2

если вы хотите использовать Hibernate 4.0.0.Final. для значения свойства hibernate.cache.region.factory_class:

  • org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory вместо net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory и
  • org.hibernate.cache.ehcache.EhCacheRegionFactory вместо net.sf.ehcache.hibernate.EhCacheRegionFactory

В противном случае вы получите некоторые внутренние исключения ClassNotFound

Ответ 3

Документы EhCache говорят, что с Hibernate 3.3 дальше вы должны использовать:

<property name="hibernate.cache.region.factory_class">
    net.sf.ehcache.hibernate.EhCacheRegionFactory
</property>

(или net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory)