복붙노트

[SPRING] 최대 절전 모드 + 스프링 버전 호환성

SPRING

최대 절전 모드 + 스프링 버전 호환성

안녕, 내 웹 애플 리케이션에서 봄 도서관을 업그레이 드 싶습니다. 나는 Hibernate를 사용하고 있기 때문에 어떤 버전의 Hibernate가 특정 버전의 Spring과 호환되는지 찾는 방법이 있는지 알고 싶었다.

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

현재 설정 :

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

저의 저장소에서 사용 가능한 Hibernate의 최신 버전은 위의 이슈들에 대해 3.5.4-FINAL과 3.5.6-FINAL입니다

최신 정보 Spring 2.5 (변경되지 않음) 3.2에서 3.5.4로 Hibernate를 업그레이드 한 후에이 오류가 발생합니다.

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)

해결법

  1. ==============================

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

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

    예를 들어, Spring 3.2.3.RELEASE에 의해 사용되는 Hibernate의 버전을 확인하기 위해서 다음 쉘 명령어를 사용할 수있다 :

    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>
    

    그리고 위의 결과로부터 우리는 Spring 3.2.3.RELEASE가 Hibernate 4.1.9.Final과 3.3.2.GA를 지원한다는 것을 추론 할 수있다.

    물론 다른 버전의 Hibernate에서 Spring을 사용할 수는 있지만 POM의 버전은 문제를 줄 가능성이 적습니다.

  2. ==============================

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

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

  3. ==============================

    3.이클립스 IDE에서는 아주 쉽게 찾을 수있다. IDE의 기본 편집기에서 pom.xml을 엽니 다. 이제 spring-orm이 정의 된 특정 종속성으로 이동하십시오. 정의 위에 마우스를 놓고 CTRL + LEFT_MOUSE_CLICK를 수행하면 spring-orm pom xml이 열립니다. 여기서 hibernate-entitymanager에 사용 된 의존성 버전을 찾을 수 있습니다. 이 애니메이션보기 :

    이클립스 IDE에서는 아주 쉽게 찾을 수있다. IDE의 기본 편집기에서 pom.xml을 엽니 다. 이제 spring-orm이 정의 된 특정 종속성으로 이동하십시오. 정의 위에 마우스를 놓고 CTRL + LEFT_MOUSE_CLICK를 수행하면 spring-orm pom xml이 열립니다. 여기서 hibernate-entitymanager에 사용 된 의존성 버전을 찾을 수 있습니다. 이 애니메이션보기 :

  4. ==============================

    4.난 그들이 모든 버전에 호환되는 것 같아, 이전 버전과의 호환성은 결코 문제가되지 않습니다. 몇 가지 구성을 변경해야 할 수도 있습니다. 봄 버전을 최신 버전으로 변경하면 문제가 발생할 수 있습니다.

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

  5. from https://stackoverflow.com/questions/18017466/hibernate-spring-version-compatibility by cc-by-sa and MIT license