过去做过一些基于spring、hibernate整合应用的实例,本人感觉spring与hibernate最好的结合就是泛型Dao的实现,代码量节省了一半,而且业务逻辑一目了然。
后来做别的系统时候考虑过这样的框架,但是数据库结构如果不固定,动态生成的东西比较多这个时候只好放弃了hibernate而选择了同样具有orm性能的ibatis,下面就spring与ibatis的结合相关配置做下说明(如有不同意见,希望交流)
首先spring和ibatis具体下载和安装就不多说了。直接切入正题
Spring框架下的ibatis应用,特别是在容器事务管理模式下的ibatis应用开发
部署如下:
首先spring配置文件:
Spring_base.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans default-lazy-init="true"> <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>net.sourceforge.jtds.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:jtds:sqlserver://localhost:1433/test</value> </property> <property name="username"> <value>sa</value> </property> <property name="password"> <value>sa</value> </property> <property name="maxActive"> <value>10</value> </property> <property name="maxIdle"> <value>2</value> </property> <property name="maxWait"> <value>300</value> </property> </bean> /////////////////// dataSource:配置你的数据源连接 <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation"> <value>SqlMap_config.xml</value> </property> <property name="dataSource"><!-- 从指定dataSource中获取数据源 亦可把该定义放到每个自定义Dao中--> <ref bean="dataSource" /> </property> </bean> //////////////////// sqlMapClient:集成ibatis配置文件和把数据源与ibatis相关联 <!-- 配置事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"> <ref local="dataSource" /> </property> </bean> ///////////////// transactionManager:配置事务管理 <!--公共组件--> <import resource="spring_other.xml" /> ////////////把用户自定义Bean与基本bean分开,集成进去spring_other.xml文件 </beans> |
以上是spring 把一些ibatis相关配置集成到自己的配置文件里面
Spring_other.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="userService" class="com.user.UserServiceImpl"> <property name="transactionManager"> <ref bean="transactionManager" /> </property> <property name="userDao"> <ref local="userDao" /> </property> </bean> ////////////////////////使用service管理所有用户自定义bean和Dao操作,用来设置事务回滚,线程安全等。 <bean id="userDao" class="com.user.dao.UserDaoImpl"> <property name="sqlMapClient" ref="sqlMapClient"/> </bean> ///////////////用户自定义Dao操作,因spring_base.xml中sqlMapClient已经把dataSource包含,故dataSource不再声明,如果该操作需要别的数据连接,可加入例如: ////////<property name=”dataSource1” ref=”dataSource1”/>////////// </beans> |