2013-04-12 7 views
9

Ich versuche, eine Anwendung von Hibernate 3 auf Hibernate 4 zu aktualisieren. Die Anwendung verwendet ehcache.Benötigt Hibernate 4 mit ehcache ehcache-core library?

Beim Upgrade auf Hibernate 4.2.0.Final habe ich eine Abhängigkeit von hibernate-ehcache-4.2.0.Final wie vorgeschlagen hinzugefügt.

Wenn begann ich die Anwendung bis ich folgende Fehlermeldung erhalten:

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

http://www.javacraft.org/2012/03/migrate-to-hibernate-4-ehcache.html Laut ich die Abhängigkeit von ehcache-Kern entfernen sollte, und verwenden Sie nur die Hibernate bereitgestellt jar diesen Fehler zu beheben.

Nun, wenn ich diese Anweisungen befolge und diese Abhängigkeit entfernen, kompiliert meine Anwendung, die den net.sf.ehcache.CacheManager verwendet, nicht mehr.

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

Also meine Frage ist, kann ich beide Bibliotheken verwenden und weitermachen wie bisher arbeiten (ohne die App zu aktualisieren), oder muss ich die app ändern, wobei in diesem Fall tut hibernate- ehcache sogar die Funktionalität erforderlich auf den Cache zugreifen?

Antwort

20

Wenn Sie Hibernate 4 verwenden, müssen Sie die org.hibernate-Paketklassen verwenden. Die net.sf.ehcache diejenigen sind Ziel in Hibernate 3.

Form 4 sie direkt bis 4 im Hibernate-Repo portiert haben (was das Vernünftigste, was unserer Meinung nach).

So mit org.hibernate.cache.ehcache.EhCacheRegionFactory sollte Ihr Problem lösen.

+0

nein, dies ist nicht rsolving das Problem, ich habe :: ** org.hibernate.HibernateException: konnte nicht instantiieren RegionFactory [org.hibernate.cache.ehcache.EhCacheRegionFactory] – Bourkadi