閱讀233 返回首頁    go 技術社區[雲棲]


Spring3+Hibernate3升級為Spring4+Hibernate4

寫在開始

今天,把當前項目做了一下升級,特此記錄一下。

由於曆史原因,項目本身並不是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

升級版本 spring4.3.6

2

注意 spring-asm相關已經集成到spring-core中,無需重複添加,不然係統會提示報錯。

hibernate升級

目前版本 hibernate3

由於以前項目,隻有hibernate3.jar這一個,所以替換到它就ok。

升級版本hibernate4

3

一個都不能少,特別是jboss-logging-3.1.3.GA.jar,不要以為它是個廢物。

相關xml文件配置修改:

<!--注意這裏修改為了hibernate4了-->
<bean  >
        <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  >
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <tx:advice  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->
        <aop:pointcut  expression="execution(* com.acts.*.*.service..*.*(..))" />
        <aop:advisor pointcut-ref="allServiceMethod" advice-ref="txAdvice" />
    </aop:config>

相關代碼修改:

如果你之前的dao層是繼承了HibernateDaoSupport,你隻需要將引入的

import org.springframework.orm.hibernate3.HibernateCallback;

修改為

import org.springframework.orm.hibernate4.HibernateCallback;

如果hibernate3中使用了executeFind回調方法,請統一修改為execute,hibernate4中已經不支持。相關的SQLException異常信息刪除掉即可。

升級完畢

至此,啟動項目,如果沒有錯誤提示,說明升級ok。

最後更新:2017-04-01 16:41:01

  上一篇:go In or Out? Kubernetes一統江湖的野心 - 寫在Kubernetes 1.6即將發布之際
  下一篇:go 數據挖掘——概述