Spring 3.1, Hibernate 4, SessionFactory

Questo stava funzionando:

 ... 

ma l’aggiornamento alla versione sopra citata lo spezza. Qual è il metodo corretto per creare un bean SessionFactory con Spring 3.1.Release e Hibernate 4.0.0.FINAL ?

L’errore sulla distribuzione è:

l’eccezione annidata è java.lang.NoClassDefFoundError: Lorg / hibernate / cache / CacheProvider;

MODIFICARE
Ho aggiunto la mia risposta, che ha risolto per me.

Penso che dovresti usare org.springframework.orm.hibernate4.LocalSessionFactoryBean invece di org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean

Da LocalSessionFactoryBean javadoc:

NOTA: questa variante di LocalSessionFactoryBean richiede Hibernate 4.0 o versione successiva. È simile nel ruolo alla class con lo stesso nome nel pacchetto orm.hibernate3. Tuttavia, in pratica, è più vicino a AnnotationSessionFactoryBean poiché il suo scopo principale è quello di eseguire il bootstrap di SessionFactory dalla scansione delle annotazioni.

Hibernate 4 ha rimosso le interfacce e le classi correlate a CacheProvider deprecate a favore dell’interfaccia cache correlata a RegionFactory rilasciata in precedenza. Puoi trovare il riepilogo del pacchetto della cache della versione 4 qui , il sumrio del pacchetto della cache della versione 3.2 qui (appena prima che fosse aggiunta l’interfaccia RegionFactory ) e il sumrio del pacchetto della cache della versione 3.3 qui (quando RegionFactory stato rilasciato per la prima volta).

Oltre al JavaDoc, potresti trovare utile la seguente documentazione:

  • Utilizzo di JBoss Cache come cache di secondo livello di ibernazione – Capitolo 5. Architettura
  • Ehcache Hibernate Second-Level Cache
  • Hibernate 4 – The Second Level Cache

Tuttavia, in base alle dipendenze Spring 3.1 Spring 3.1 non richiede Hibernate 4 (nella sezione Full Dependencies , JBoss Hibernate Object-Relational Mapper è alla versione 3.3.2.GA ). Se si desidera eseguire l’aggiornamento a Hibernate 4, è necessario aggiornare le impostazioni della cache. Altrimenti, prova a utilizzare la versione 3.x di Hibernate 3.3.2 o successiva.

AGGIORNARE : tenere presente che la documentazione di Hibernate 4 in Spring 3.1 è attualmente scarsa. La Spring Framework Reference Documentation ha solo il seguente supporto per Hibernate 4.x :

 See Javadoc for classs within the new org.springframework.orm.hibernate4 package 

Spring 3.1 introduce LocalSessionFactoryBuilder , che estende la Configuration di Hibernate.

Sembrerebbe che tu debba tenere d’occhio alcune altre modifiche se vuoi usare Hibernate 4.

AGGIORNAMENTO 2 : Appena notato questa domanda è un duplicato vicino di Eccezione NoClassDefFoundError per CacheProvider .

Usa questa configurazione

file di configurazione di ibernazione:

      

POM:

    cglib cglib ${cglib-version} runtime    org.hibernate hibernate-entitymanager ${org.hibernate-version}     org.springframework spring-orm ${org.springframework-version}  

ho dimenticato di includere le versioni, sto usando la versione ibernata: 4.1.2.Finale e versione spring: 3.1.1.RELEASE, c’è un aggiornamento di ibernazione 4.1.3.Final, non testato ma credo che funzionerà bene.

Ho dovuto cambiare un paio di cose, eccoci qui:

Nella mia configurazione del gestore delle transazioni è stato cambiato 3 -> 4:

 org.springframework.orm.hibernate4.HibernateTransactionManager; 

E la mia sessioneFactory a questo (grazie @toxin):

  
  • Nel caso di Hibernate 4.0 o versione successiva, a partire dalla versione Spring 4.0, è necessario utilizzare
 org.springframework.orm.hibernate4.LocalSessionFactoryBean 

Per esempio:

  ...  

Vedi http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/orm/hibernate4/LocalSessionFactoryBean.html

  • Nel caso di Hibernate 5.0 / 5.1 / 5.2, a partire dalla versione 4.3, è meglio usare invece
 org.springframework.orm.hibernate5.LocalSessionFactoryBean 

(Vedi http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/orm/hibernate5/LocalSessionFactoryBean.html )

Spring 3.1 e Hibernate 4 non sono compatibili in tanti modi. Si prega di fare riferimento alla seguente spring JIRA https://jira.springsource.org/browse/SPR-9365