2013-08-02 2 views
11

H, 웹 애플 리케이션에서 Spring 라이브러리를 업그레이드하고 싶습니다. 나는 Hibernate를 사용하고 있기 때문에 어떤 버전의 Hibernate가 특정 버전의 Spring과 호환되는지 찾는 방법이 있는지 알고 싶었다.Hibernate + spring version compatibility

나는 이미 Google을 검색하여 비슷한 게시물을 읽었지만 라이브러리/프레임 워크의 다른 버전을 비교할 수있는 방법이 있는지 알고 싶습니다.

내 현재 설정 :

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

내 저장소에서 사용할 수있는 최대 절전 모드의 최신 버전은 위의 유물

나는이 오류를 얻고있다 UPDATE에 대한 3.5.4-FINAL3.5.6-FINAL이다 업그레이드 한 후 3.5로 최대 절전 모드 .4 from Spring 2.5 (변경되지 않음)

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) 

답변

18

spring-orm Maven POM에서 확인할 수 있습니다.

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

위의 명령은 다음과 같은 출력을 초래할 것 :

 <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> 
예는 봄 3.2.3.RELEASE에서 사용하는 최대 절전 모드의 버전을 확인하려면

, 당신은 다음과 같은 쉘 명령을 실행할 수 있습니다

위의 결과에서 우리는 Spring 3.2.3.RELEASE가 Hibernate 4.1.9.Final과 3.3.2.GA를 지원한다고 추론 할 수있다.

당연히 당신은 다른 버전의 Hibernate에서 Spring을 사용할 수 있지만, POM의 버전은 당신에게 어떤 이슈를 줄 가능성이 적습니다.

0

그들은 모든 버전에서 호환 가능하다고 생각합니다. 이전 버전과의 호환성은 결코 문제가되지 않습니다. 몇 가지 구성을 변경해야 할 수도 있습니다. 봄 버전을 최신 버전으로 변경하면 문제가 발생할 수 있습니다.

+2

아니요, 불행히도 이것은 정확하지 않습니다. 방금 JPA 2.0 대 JPA 2.1 문제를 해결하기 위해 최대 절전 모드를 4.2.18 버전으로 다운 그레이드했고, 봄철로드가 시도되는 누락 된 서비스로 인해 최대 절전 모드 - 스프링 통합이 중단되었습니다 (4.1.1에서는 스프링 버전이 변경되지 않았습니다. 해제). 따라서 버전 민감성이 있으며 모든 것이 모든 기능을 수행하지는 않습니다. – demaniak

+0

하위 호환성은 spring-orm vs hibernate를 포함한 다양한 종류의 Java 프레임 워크에서 매우 일반적으로 발생하는 문제입니다. –

2

windows에서 grep 명령을 실행할 수 없다면 .m2\repository\org\springframework\spring-orm\4.2.5.RELEASE\spring-orm-4.2.5.RELEASE.pom 파일 위치로 이동하십시오. 편집기에서 pom 파일을 열고 "hibernate"라는 단어를 검색하면 봄 버전에 대한 종속성을 찾을 수 있습니다. [grep 명령에서도 동일한 접근 방식을 사용합니다]