2013-08-02 4 views
11

H, Ich möchte Spring Bibliotheken in meiner Web-App. Da ich auch Hibernate verwende, wollte ich wissen, ob ich herausfinden kann, welche Version von Hibernate mit einer bestimmten Version von Spring kompatibel ist.Hibernate + Feder Version Kompatibilität

Ich habe bereits google gesucht und ähnliche Beiträge von SO gelesen, aber ich möchte wissen, ob es eine Möglichkeit gibt, verschiedene Versionen von Bibliotheken/Framework zu vergleichen.

Meine aktuelle Setup:

Spring V2.5 
Hibernate : org.hibernate.hibernate 3.2.6.ga 
      org.hibernate.hibernate-annotations 3.3.1.ga 

Die neueste Version von Hibernate in meinem Repository ist 3.5.4-FINAL und 3.5.6-FINAL für das oben genannte Artefakte

UPDATE ich diese Störung erhalte nach 3,5 Hibernate Upgrade .4 von 3.2 mit Feder 2.5 (unverändert)

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0' 
defined in class path resource [applicationContext-hibernate.xml]: Initialization of bean failed; 
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' 
defined in class path resource [applicationContext-hibernate.xml]: Invocation of init method failed; nested exception is java.lang.IncompatibleClassChangeError: 
Implementing class 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 
     at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:881) 
     at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:597) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:366) 
     at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255) 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) 
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) 
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206) 
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) 
     at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079) 
     at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002) 
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506) 
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317) 
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065) 
     at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
     at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
     at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
     at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
     at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

Antwort

18

Sie können dies in der spring-orm Maven POM überprüfen.

Zum Beispiel der Version von Hibernate von Spring 3.2.3.RELEASE verwendet, um zu überprüfen, können Sie den folgenden Shell-Befehl:

grep -A 1 hibernate- ~/.m2/repository/org/springframework/spring-orm/3.2.3.RELEASE/spring-orm-3.2.3.RELEASE.pom 

Der Befehl oben in der folgenden Ausgabe führen würde:

 <artifactId>hibernate-annotations</artifactId> 
     <version>3.4.0.GA</version> 
-- 
     <artifactId>hibernate-core</artifactId> 
     <version>4.1.9.Final</version> 
-- 
     <artifactId>hibernate-core</artifactId> 
     <version>3.3.2.GA</version> 
-- 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.1.9.Final</version> 
-- 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>3.4.0.GA</version> 

Und aus der obigen Ausgabe können wir ableiten, dass Spring 3.2.3.RELEASE unterstützt Hibernate 4.1.9.Final und 3.3.2.GA.

Natürlich können Sie versuchen, Spring mit einer anderen Version von Hibernate zu verwenden, aber die Versionen aus dem POM geben Ihnen wahrscheinlich weniger Probleme.

0

Ich denke, sie sind kompatibel für alle Versionen, Rückwärtskompatibilität ist nie ein Problem. Sie müssen möglicherweise einige Konfigurationen ändern. Die Änderung der Federversion auf eine neuere Version scheint in Ordnung zu sein, Änderungen, die sonst durchgeführt werden, können einige Probleme verursachen.

+2

Nein, das ist leider nicht korrekt. Ich habe Hibernate (um ein JPA 2.0 vs JPA 2.1 Problem zu lösen) auf Version 4.2.18.Final heruntergestuft, und jetzt bricht die Hibernate-Spring-Integration aufgrund fehlender Dienste, die Spring zu laden versucht, ab (Spring Version unberührt bei 4.1.1. FREISETZUNG). Es gibt also eine gewisse Versionsempfindlichkeit, und alles wird nicht mit allem funktionieren. – demaniak

+0

Rückwärtskompatibilität ist ein sehr häufiges Problem für Java-Frameworks verschiedener Art, einschließlich Spring-Orm vs. Hibernate. –

2

Wenn Sie den Befehl grep nicht in Windows ausführen können, navigieren Sie zu Ihrem Speicherort .m2\repository\org\springframework\spring-orm\4.2.5.RELEASE\spring-orm-4.2.5.RELEASE.pom. Öffnen Sie die Pom-Datei in einem Editor und suchen Sie nach dem Wort "Hibernate". Hier finden Sie die Abhängigkeiten für Ihre Spring-Version. [grep Befehl verwendet auch denselben Ansatz]

Verwandte Themen