当前位置: 代码迷 >> Java Web开发 >> 怎么把SSH里的Hibernate换成iBatis
  详细解决方案

怎么把SSH里的Hibernate换成iBatis

热度:7646   发布时间:2013-02-25 21:15:54.0
如何把SSH里的Hibernate换成iBatis ?
我现在有一个现成的SSH的例子已经跑通了,
我想把Hibernate换成iBatis ,咋整?

------解决方案--------------------------------------------------------
工作量好大的
------解决方案--------------------------------------------------------
ibatis可看成對SQL作OR-Mapping,所以最大的問題會在於原先用 hibernate寫在程序理的HQL,
如何抽離出來。

所以如果要設計成可抽換架構,最好從SQL與程式分離開始設計。
------解决方案--------------------------------------------------------
如果直接手动改,必然改动量很大。你搜索一下看看有没有相关工具,可以协助你自动处理很多mapping的转换。但是依然会修改很多东西。
------解决方案--------------------------------------------------------
这种后期改框架的肯定很烦,
不是三言两语能解决的。
------解决方案--------------------------------------------------------
工作量比重新做不少多少!~~~~~~~
------解决方案--------------------------------------------------------
DAO层全部换掉多做成ibatis的sqlmap映射,spring里面关于hibernate的配置都改为ibatis的,如果系统不大的话倒也是很快的。
------解决方案--------------------------------------------------------
1.先换数据源从hibernate换成ibatis
Java code
    <!-- 加载数据源配置文件 -->    <bean        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">        <property name="locations">            <list>                <value>classpath:data-source.properties                </value>            </list>        </property>    </bean>    <!-- 定义 CP平台mysql数据源 -->    <bean id="xxSource" class="org.apache.commons.dbcp.BasicDataSource"        destroy-method="close">        <property name="driverClassName" value="${xx_DriverClassName}" />        <property name="url" value="${xx_url}" />        <property name="username" value="${xx_username}" />        <property name="password" value="${xx_password}" />        <property name="initialSize" value="${xx_initialSize}" />        <property name="maxActive" value="${xx_maxActive}" />        <property name="maxWait" value="${xx_maxWait}" />        <property name="maxIdle" value="${xx_maxIdle}" />        <property name="minIdle" value="${xx_minIdle}" />        <property name="removeAbandoned" value="${xx_removeAbandoned}" />        <property name="removeAbandonedTimeout" value="${xx_removeAbandonedTimeout}" />    </bean>    <!-- 为每个数据源单独定义 SqlSessionFactory -->    <bean id="xxSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="xxSource" />    </bean>    <!-- 为每个数据源单独定义 SqlMapper -->    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <property name="basePackage" value="路径1,路径2" />        <property name="sqlSessionFactory" ref="xxSqlSessionFactory" />    </bean>
------解决方案--------------------------------------------------------
探讨

那我要疯了啊··········

------解决方案--------------------------------------------------------
没必全换。两个配合就行了。
hibernate是增删改。
mybatis作查询。
------解决方案--------------------------------------------------------
[/WEB-INF/applicationContext.xml]路径写错了吧,没找到文件
探讨

还有一点下面,大家帮我看看是什么错吧~~~~~~~~~~~~


2012-3-29 15:37:24 org.apache.catalina.core.StandardContext listenerStart
严重: Exception sending context initialized event to listener instance of class org.spring……
  相关解决方案