我试图将Hibernate 3的应用程序升级到Hibernate 4.应用程序使用ehcache.
当升级到Hibernate 4.2.0.Final我添加了一个依赖于hibernate-ehcache-4.2.0.Final的建议.
当我启动应用程序时,我收到以下错误:
Caused by: java.lang.NoClassDefFoundError: org/hibernate/cache/TimestampsRegion
根据http://www.javacraft.org/2012/03/migrate-to-hibernate-4-ehcache.html我应该删除对ehcache-core的依赖,并且只使用提供的hibernate来解决这个错误.
现在,如果我按照这些说明删除这个依赖关系,我的应用程序使用net.sf.ehcache.CacheManager不再编译.
// For example,this no-longer works CacheManager manager = CacheManager.getInstance();
所以我的问题是,我可以使用这两个库,并继续像以前一样工作(不更新应用程序),或者我必须更改应用程序,在这种情况下,hibernate-ehcache甚至提供访问缓存所需的功能?
解决方法
使用Hibernate 4时,必须使用org.hibernate打包的类.
net.sf.ehcache是Hibernate 3的目标.
net.sf.ehcache是Hibernate 3的目标.
形式4他们直接在Hibernate回购中移植到了4个(这在我们看来是最明智的).
所以使用org.hibernate.cache.ehcache.EhCacheRegionFactory应该可以解决你的问题.