9

アプリケーションを 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 はキャッシュにアクセスするために必要な機能を提供しますか?

4

2 に答える 2

20

Hibernate 4 を使用する場合、org.hibernate パッケージ クラスを使用する必要があります。net.sf.ehcacheのものは、Hibernate 3 をターゲットにしています。

フォーム 4 は、Hibernate リポジトリ内で直接 4 に移植されています (これは、私たちの意見では最も賢明なことです)。

したがって、org.hibernate.cache.ehcache.EhCacheRegionFactoryを使用すると問題が解決するはずです。

于 2013-07-10T19:41:55.677 に答える