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.
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ą:
Dlatego zachęcamy do korzystania z nowych implementacji. Konfiguracja odbywa się za pomocą następującej właściwości:
- 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. (...)
<property name="hibernate.cache.region.factory_class">
net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
</property>
Który zastępuje hibernate.cache.provider_class
własność.
Referencje
- Hibernate Blog
- dokumentacja EhCache
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
zamiastnet.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
i -
org.hibernate.cache.ehcache.EhCacheRegionFactory
zamiastnet.sf.ehcache.hibernate.EhCacheRegionFactory
W przeciwnym razie pojawią się pewne wewnętrzne wyjątki ClassNotFound
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
)
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