Dlaczego EhCacheProvider jest przestarzały?

Konfiguruję mój projekt hibernate tak, aby używał dostawcy pamięci podręcznej drugiego poziomu, aby móc korzystać z buforowania zapytań.

Dodałem zależność do ehcache:

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

Myślę, że Klasa provider, której chcę użyć to:

net.sf.ehcache.hibernateEhCacheProvider

Kiedy patrzę na biblioteki w eclipse, widzę @Deprecated adnotację na EhCacheProvider, a także na SingletonEhCacheProvider. Co jest? Czy istnieje aktualny dostawca zastępczy, z którego mogę skorzystać?

Używam wersji hibernate 3.4.0.GA, w przypadku to ma znaczenie.

Author: Bozho, 2010-09-11

3 answers

Co się dzieje? Czy istnieje aktualny dostawca zastępczy, z którego mogę skorzystać?

Zostały wycofane na rzecz klas implementujących Nowy Hibernate 3.3 / 3.5 SPI z jego CacheRegionFactory. Implementacje te to odpowiednio:

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

Korzyści z nowego SPI obejmują:

  • SPI usunął synchronizację w buforze Hibernate. On pozostawione do implementacji buforowania jak kontroluj współbieżny dostęp. Ehcache, począwszy od 1.6, usunięty synchronizacja na rzecz CAS podejdźcie. Wyniki, dla ciężkich obciążenia są imponujące.
  • [[12]}nowy SPI zapewnia drobniejszą kontrolę nad regionami pamięci podręcznej i strategie pamięci podręcznej. Ehcache 2.0 zabiera zaletą tego jest zmniejszenie pamięci użyj. Zapewnia tylko do odczytu, nonstrict strategie read write I read write, / align = "left" /
  • Ehcache 2.0 jest łatwo dystrybuowany za pomocą terakoty Macierz Serwerów. To zapewnia bezpieczne działanie klastra (coherence), HA i skali poza limity pamięci podręcznej w procesie, która jak większość użytkowników Hibernate korzysta Ehcache dzisiaj. Istnieje istniejący ehcache.jar i ehcache-Terakota.jar który udostępnia bibliotekę klienta. (...)
Dlatego zachęcamy do korzystania z nowych implementacji. Konfiguracja odbywa się za pomocą następującej właściwości:
<property name="hibernate.cache.region.factory_class">
    net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
</property>

Który zastępuje hibernate.cache.provider_class własność.

Referencje

 46
Author: Pascal Thivent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-11 07:53:25

Jeśli chcesz użyć Hibernate 4.0.0.Finał dla wartości hibernate.cache.region.factory_class wykorzystanie własności:

  • org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory zamiast net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory i
  • org.hibernate.cache.ehcache.EhCacheRegionFactory zamiast net.sf.ehcache.hibernate.EhCacheRegionFactory

W przeciwnym razie pojawią się pewne wewnętrzne wyjątki ClassNotFound

 15
Author: Milan Aleksić,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-02 14:20:19

EhCache docs mówią, że od Hibernate 3.3 należy używać:

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

(lub net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory)

 5
Author: Bozho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-11 17:26:19