日期:2014-05-17  浏览次数:20671 次

如何把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……