H, je souhaite mettre à niveau les bibliothèques Spring dans mon application Web. Puisque j'utilise également Hibernate, je voulais savoir s'il était possible de trouver quelle version d'Hibernate est compatible avec une version spécifique de Spring.
J'ai déjà effectué une recherche sur Google et lu des publications similaires de SO, mais je veux savoir s'il existe un moyen de comparer différentes versions de library/framework.
Ma configuration actuelle:
Spring V2.5
Hibernate : org.hibernate.hibernate 3.2.6.ga
org.hibernate.hibernate-annotations 3.3.1.ga
La dernière version d'Hibernate disponible dans mon référentiel est 3.5.4-FINAL
et 3.5.6-FINAL
pour les artefacts ci-dessus.
UPDATE Je reçois cette erreur après la mise à niveau de Hibernate vers la version 3.5.4 à partir de la version 3.2 avec Spring 2.5 (aucune modification)
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)
Vous pouvez vérifier cela dans le spring-orm
Maven POM.
Par exemple, pour vérifier la version d'Hibernate utilisée par Spring 3.2.3.RELEASE, vous pouvez émettre la commande Shell suivante:
grep -A 1 hibernate- ~/.m2/repository/org/springframework/spring-orm/3.2.3.RELEASE/spring-orm-3.2.3.RELEASE.pom
La commande ci-dessus donnerait le résultat suivant:
<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>
Et de la sortie ci-dessus, nous pouvons déduire que Spring 3.2.3.RELEASE prend en charge Hibernate 4.1.9.Final et 3.3.2.GA.
Bien sûr, vous pouvez essayer d’utiliser Spring avec différentes versions d’Hibernate, mais les versions de POM sont moins susceptibles de vous poser problème.
Si vous ne pouvez pas exécuter la commande grep dans Windows .. accédez à l’emplacement de votre fichier .m2\repository\org\springframework\spring-orm\4.2.5.RELEASE\spring-orm-4.2.5.RELEASE.pom
. Ouvrez le fichier pom dans un éditeur et recherchez le mot "hibernation": vous pouvez trouver les dépendances de votre version de printemps [La commande grep utilise également la même approche]
Dans votre Eclipse IDE, cela se découvre assez facilement. Ouvrez le fichier pom.xml dans l'éditeur par défaut de l'EDI. Naviguez maintenant vers la dépendance spécifique où spring-orm
est défini. Si vous survolez la définition et effectuez une CTRL + LEFT_MOUSE_CLICK il ouvrira le printemps-orm pom xml. Vous pouvez trouver ici la version de dépendance utilisée pour hibernate-entitymanager
. Voir cette animation: