关于Spring/Hibernate 3.x升级4.x的小问题

本文介绍了Spring框架与不同版本JDK之间的兼容性问题,特别是Spring 3.x与JDK 8的不兼容性导致的问题及解决方案,并讨论了Spring 4.x中事务管理的配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情景:

 之前版本现在版本
JDK1.71.8
Tomcatv7.0v8.0
Spring3.x4.x
Hibernate3.x4.x
MySQL忘了5.1.53

分析:

如果升级版本错误,就是这几处的问题。

问题1:

我使用Spring3.X --- jdk8----出现了如下问题:

java.lang.IllegalArgumentException
     org.springframework.asm.ClassReader.<init>(Unknown Source)
     org.springframework.asm.ClassReader.<init>(Unknown Source)
     org.springframework.asm.ClassReader.<init>(Unknown Source)
原因:Spring3.X --- jdk8不兼容
解决:

  一:把jdk版本换成1.7 or 1.7以下

  二:使用spring-4.0-RELEASE及以上版本

问题2:

Spring4.x的事务管理没有起作用。

解决:(以下是我碰到的问题解决方法,当然还有其它解决方法我没有列出)

    <!-- 使用FactoryBean创建Spring得到 SessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
          <!-- 把hibernate.cfg.xml文件中的配置信息注入进来,从而可以删掉配置文件-->
          <property name="dataSource" ref="dataSource"></property>
          <property name="hibernateProperties">
                  <props>
                      <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
                      <prop key="javax.persistence.validation.mode">none</prop>
                      <prop key="hibernate.show_sql">true</prop>
                      <prop key="hibernate.format_sql">true</prop>
                      <prop key="hibernate.hbm2ddl.auto">update</prop>
                      <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
                  </props>
          </property>
          <property name="mappingLocations" value="classpath:king/domain/*.hbm.xml"></property>
    </bean>

①如果你的MySQL的版本改动了,这个属性也可能会随着改动。

原因:

如果表的类型为MyISAM,则sping里配置的事务是不起作用的,所以要使用InnoDB类型的表,因为这个类型的表才支持事务。

②3.x时这一处我们都会写thread,4.x要写成SpringSessionContext。

 

 

 

转载于:https://www.cnblogs.com/kingofkai/p/6142353.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值