前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring3+Hibernate3升级为Spring4+Hibernate4

Spring3+Hibernate3升级为Spring4+Hibernate4

作者头像
小柒2012
发布2018-04-13 14:38:12
1.3K0
发布2018-04-13 14:38:12
举报
文章被收录于专栏:IT笔记IT笔记

写在开始

今天,把当前项目做了一下升级,特此记录一下。

由于历史原因,项目本身并不是Maven项目,所以升级JAR包都是手动从Maven库中下载,然后load进项目lib。

目前 spring版本已经更新至5,但是4还是主流版本。

相比spring3,spring4新特性如下: Spring4新特性——泛型限定式依赖注入 Spring4新特性——核心容器的其他改进 Spring4新特性——Web开发的增强 Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC Spring4新特性——Groovy Bean定义DSL Spring4新特性——更好的Java泛型操作API Spring4新特性——JSR310日期API的支持 Spring4新特性——注解、脚本、任务、MVC等其他特性改进

版本升级

spring升级

目前版本 spring3.0.4

1.png
1.png

升级版本 spring4.3.6

2.png
2.png

注意 spring-asm相关已经集成到spring-core中,无需重复添加,不然系统会提示报错。

hibernate升级

目前版本 hibernate3

由于以前项目,只有hibernate3.jar这一个,所以替换到它就ok。

升级版本hibernate4

3.png
3.png

一个都不能少,特别是jboss-logging-3.1.3.GA.jar,不要以为它是个废物。

相关xml文件配置修改:
代码语言:javascript
复制
<!--注意这里修改为了hibernate4了-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mappingLocations">
            <list>
                <value>classpath:com/acts/web/*/model/*.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.query.substitutions">true=1,false=0</prop>
                <prop key="jdbc.use_scrollable_resultset">false</prop>
                <prop key="hibernate.current_session_context_class">
                    org.springframework.orm.hibernate4.SpringSessionContext
                </prop>
            </props>
        </property>
    </bean>
    
     <!-- 定义事务注意这里修改为了hibernate4了-->
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="save*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="delete*" propagation="REQUIRED" />
            <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="insert*" propagation="REQUIRED" />
            <tx:method name="del*" propagation="REQUIRED" />
            <tx:method name="remove*" propagation="REQUIRED" />
            <tx:method name="change*" propagation="REQUIRED" />
            <!--hibernate4必须配置为开启事务 否则 getCurrentSession()获取不到-->  
            <tx:method name="*" propagation="REQUIRED" read-only="true" />
        </tx:attributes>
    </tx:advice>
    <aop:config proxy-target-class="true">
        <aop:pointcut id="allServiceMethod" expression="execution(* com.acts.*.*.service..*.*(..))" />
        <aop:advisor pointcut-ref="allServiceMethod" advice-ref="txAdvice" />
    </aop:config>
相关代码修改:

如果你之前的dao层是继承了HibernateDaoSupport,你只需要将引入的

代码语言:javascript
复制
import org.springframework.orm.hibernate3.HibernateCallback;

修改为

代码语言:javascript
复制
import org.springframework.orm.hibernate4.HibernateCallback;

如果hibernate3中使用了executeFind回调方法,请统一修改为execute,hibernate4中已经不支持。相关的SQLException异常信息删除掉即可。

升级完毕

至此,启动项目,如果没有错误提示,说明升级ok。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在开始
  • 版本升级
    • spring升级
      • hibernate升级
        • 相关xml文件配置修改:
        • 相关代码修改:
    • 升级完毕
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档