これは働いていました:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
...
ただし、前述のバージョンにアップグレードすると壊れます。 Spring 3.1.ReleaseおよびHibernate 4.0.0.FINALで SessionFactory Beanを作成する正しい方法は何ですか?
デプロイ時のエラーは次のとおりです。
ネストされた例外はJava.lang.NoClassDefFoundError:Lorg/hibernate/cache/CacheProviderです。
[〜#〜]編集[〜#〜]
自分で答えを追加しましたが、それで修正されました。
org.springframework.orm.hibernate4.LocalSessionFactoryBean
の代わりにorg.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
を使用する必要があると思います
LocalSessionFactoryBean
javadocから:
注:LocalSessionFactoryBeanのこのバリアントには、Hibernate 4.0以降が必要です。役割はorm.hibernate3パッケージの同名のクラスに似ています。ただし、実際には、その主な目的はbootstrap=アノテーションスキャンからのSessionFactoryであるため、AnnotationSessionFactoryBeanに近いです。
Hibernate 4は、以前にリリースされたCacheProvider
関連のキャッシュインターフェースを支持して、廃止されたRegionFactory
関連のインターフェースとクラスを削除しました。バージョン4キャッシュパッケージの概要 here 、バージョン3.2キャッシュパッケージの概要 here (RegionFactory
インターフェイスが追加される直前)およびバージョン3.3を見つけることができます。キャッシュパッケージの概要 ここ (RegionFactory
が最初にリリースされたとき)。
JavaDoc以外に、次のドキュメントが役立つ場合があります。
ただし、Spring 3.1に基づく dependencies Spring 3.1では、Hibernate 4は必要ありません(Full Dependencies
セクション、 JBoss Hibernate Object-Relational Mapper
はバージョン3.3.2.GA
)。 Hibernate 4にアップグレードする場合は、キャッシュ設定を更新する必要があります。それ以外の場合は、代わりにHibernate 3.3.2以降の3.Xバージョンを使用してください。
[〜#〜] update [〜#〜]:現在、Spring 3.1のHibernate 4のドキュメントはまばらであることに注意してください。 Spring Framework Reference Documentation
には、 Hibernate 4.xのサポート のみが含まれます。
See Javadoc for classes within the new org.springframework.orm.hibernate4 package
Spring 3.1では、Hibernateの LocalSessionFactoryBuilder
を拡張する Configuration
を導入しています。
Hibernate 4を使用する場合は、一部の その他の変更 に注意する必要があります。
UPDATE 2:この質問は、 CacheProviderの例外NoClassDefFoundError とよく似ていることに気付いただけです。
この構成を使用する
休止状態の構成ファイル:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
POM:
<!-- CGLIB -->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>${cglib-version}</version>
<scope>runtime</scope>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${org.hibernate-version}</version>
<!-- will come with Hibernate core -->
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework-version}</version>
</dependency>
私はバージョンを含めるのを忘れていました、私は休止状態バージョンを使用しています:4.1.2.Finalと春バージョン:3.1.1。
いくつか変更する必要がありました。
私のトランザクションマネージャーでは、セットアップが変更されました3-> 4:
org.springframework.orm.hibernate4.HibernateTransactionManager;
そして、これに私のsessionFactory(@toxinに感謝):
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
org.springframework.orm.hibernate4.LocalSessionFactoryBean
例えば:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
...
</bean>
org.springframework.orm.hibernate5.LocalSessionFactoryBean