2013-04-12 5 views
9

Próbuję zaktualizować aplikację z Hibernate 3 do Hibernate 4. Aplikacja korzysta z ehcache.Czy Hibernate 4 z ehcache wymaga biblioteki rdzenia ehcache?

Podczas aktualizacji do wersji Hibernuj 4.2.0.Final dodałem zależność od stanu hibernacji-ehcache-4.2.0.Final zgodnie z sugestią.

Kiedy zacząłem się zgłoszenie otrzymałem następujący błąd:

Caused by: java.lang.NoClassDefFoundError: org/hibernate/cache/TimestampsRegion 

Według http://www.javacraft.org/2012/03/migrate-to-hibernate-4-ehcache.html powinienem usunąć zależność od ehcache-core i korzystać tylko z hibernacji pod warunkiem, słoik, aby rozwiązać ten problem.

Teraz, jeśli postępuję zgodnie z tymi instrukcjami i usunę tę zależność, moja aplikacja, która korzysta z net.sf.ehcache.CacheManager, przestaje się kompilować.

// For example, this no-longer works 
CacheManager manager = CacheManager.getInstance(); 

Więc moje pytanie brzmi, czy mogę korzystać z obu bibliotek i nadal działa jak poprzednio (bez aktualizowania aplikacji), czy muszę zmienić aplikację, w tym przypadku robi hibernacji-ehcache nawet zapewnić funkcjonalność wymaganą uzyskać dostęp do pamięci podręcznej?

Odpowiedz

20

Podczas korzystania z Hibernate 4 należy użyć klas pakietu org.hibernate. W net.sf.ehcache z nich to cel w Hibernate 3.

Formularz 4 one przeniesione do 4 w repo hibernacji bezpośrednio (co jest najbardziej rozsądną rzeczą w naszym zdaniem).

Używanie org.hibernate.cache.ehcache.EhCacheRegionFactory powinno rozwiązać twój problem.

+0

Nie, to nie rozwiązuje problemu, mam :: ** org.hibernate.HibernateException: nie można utworzyć instancji RegionFactory [org.hibernate.cache.ehcache.EhCacheRegionFactory] – Bourkadi