我正在尝试将应用程序从 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 提供的 jar 来解决这个错误。
现在,如果我按照这些说明删除此依赖项,我使用 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 的。
他们已经将 Form 4 直接移植到 Hibernate 存储库中的 4(我们认为这是最明智的做法)。
所以使用 org.hibernate.cache.ehcache.EhCacheRegionFactory 应该可以解决您的问题。
关于java - 带 ehcache 的 Hibernate 4 是否需要 ehcache-core 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15970019/