再续SSH+Xfire+Proxool开发框架整合之数据库平台移植
来源:互联网 发布:淘宝客营销计划是什么 编辑:程序博客网 时间:2024/05/16 08:35
转载请注明出处:http://blog.csdn.net/wudiwo/article/details/8656934
由于前面提到过SSH+xfire+proxool框架整合,这里不在熬述,这里重点讲一下该框架分别与MySQL 跟Oracle数据库结合的不同点。
先看一下MySQL数据库是如何在里面进行配置的,这里主要工作都是由spring来完成的,spring在里面主要完下面的工作:
(1)、利用数据库连接池来配置数据源
(2)、生命Hibernate事务,并将事务注册到逻辑对象中去
1、装配数据源代码如下:
<bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver" /> <property name="url" value="proxool.dbs" /> // 这里“proxool.dbs”后缀要和proxool.xml 文件的中 <alias>标签的值保持一致</bean>
2、 其中在proxool.xml 文件中的配置如下: <proxool> <alias>dbs</alias> <driver-url>jdbc:mysql://localhost:3306/easylife</driver-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <driver-properties> <property name="user" value="root"/> <property name="password" value="root"/> <property name="useUnicode" value="true" /> <property name="characterEncoding" value="UTF-8" /> </driver-properties> <maximum-connection-count>100</maximum-connection-count> <minimum-connection-count>10</minimum-connection-count> <house-keeping-sleep-time>90000</house-keeping-sleep-time> <maximum-new-connections>10</maximum-new-connections> <prototype-count>5</prototype-count> <test-before-use>true</test-before-use> <house-keeping-test-sql>select 1 from dual</house-keeping-test-sql> </proxool>
3、hibernate 事务声明如下:
<!-- 事务的配置 start --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory"><ref local="sessionFactory" /></property></bean><bean id="txProxyTemplate" abstract="true"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"><property name="transactionManager" ref="transactionManager" /><property name="transactionAttributes"><props><prop key="*">PROPAGATION_REQUIRED</prop>// 这里可以根据自己情况进行添加</props></property></bean><!-- 事务的配置 end -->
4、最后是hibernateProperties的配置,这里也可以配置在hibernate.cfg.xml,这里是在applicationContext.xml中的写法,hibernate.cfg.xml的写法下面在配置oracle数据库的时候给出。<!-- mysql 的配置--><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.connection.autocommit">true</prop><prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop><prop key="hibernate.connection.release_mode">after_statement</prop></props></property><property name="mappingResources"><list><value>com/easylife/menu/vo/xml/MenuTable.hbm.xml</value><value>com/easylife/detail/vo/xml/DetailcacheTable.hbm.xml</value></list></property>
完成的上面的四步,mysql的配置基本完成。
与mysql相比 1 、3 步的配置是完全一样的,这里看下剩下的两部分,oracle数据库的配置写法:
2、proxool.xml 文件的写法:
<proxool><alias>dbs</alias><driver-url>jdbc:oracle:thin:@10.18.11.26:1521:ossoradb2</driver-url><driver-class>oracle.jdbc.driver.OracleDriver</driver-class><driver-properties><property name="user" value="resurvey" /> <property name="password" value="resurvey" /></driver-properties> <house-keeping-sleep-time>9000</house-keeping-sleep-time> <proxool.simultaneous-build-throttle>50</proxool.simultaneous-build-throttle> <prototype-count>5</prototype-count> <maximum-connection-count>100</maximum-connection-count> <minimum-connection-count>10</minimum-connection-count> <house-keeping-test-sql>select CURDATE()</house-keeping-test-sql> </proxool>
4、第四部分oracle部分的配置 如下:
<!-- oracle 的配置start <property name="hibernateProperties"> <props> <prop key="hibernate.connection.provider_class"> org.hibernate.connection.ProxoolConnectionProvider </prop> <prop key="hibernate.proxool.xml">proxool.xml</prop> <prop key="hibernate.proxool.pool_alias"> dbs </prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">false</prop> <prop key="current_session_context_class">thread</prop> </props> </property> <property name="mappingResources"><list><value>com/easylife/menus/vo/xml/MenusTable.hbm.xml</value><value>com/easylife/menu/vo/xml/MenuTable.hbm.xml</value><value>com/easylife/detail/vo/xml/DetailcacheTable.hbm.xml</value></list></property>
上面的部分我们写到hibernate.cfg.xml 文件中如下:
<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration><session-factory><!-- 这里面的信息配置在了applicationContext.xml 里面的<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property><property name="proxool.pool_alias">dbs</property><property name="proxool.xml">proxool.xml</property><property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property> <property name="connection.autocommit">true</property><property name="format_sql">true</property><property name="show_sql">true</property><mapping resource="com/easylife/menus/vo/xml/MenusTable.hbm.xml" />--></session-factory> </hibernate-configuration>
单独配置在hibernate.cfg.xml中也要在applicationContext.xml的配置文件里面引入:<property name="configLocation"value="classpath:hibernate.cfg.xml"></property>
这里我在配置的过程中出现过这样一个问题,可以看到在配置mysql的第四步中有这样一个标签:
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect </prop>
我仿效配置mysql的写法在配置oracle第四步分的时候添加如下代码: <prop key="hibernate.dialect"> org.hibernate.dialect.Oracle10gDialect</prop>
之后我部署项目的时候部署不上,异常信息大概是找不到org.hibernate.dialect.Oracle10gDialect的来源,在网上查了很多资料也没找到原因,网上很多帖子都是要把这个标签添加在第四步配置上的,而我这个加上就出异常,后来干脆就去掉了,去掉后项目能部署上,至今还没发现因为少了这个配置会出什么问题。如果你知道是什么原因请给我留言。再看看在业务逻辑服务类上添加Dao和事务的配置:
<bean id="basedao" class="com.easylife.dao.BaseDAOImpl"><property name="sessionFactory"> <ref bean="sessionFactory" /></property></bean><bean id="detailService" parent="txProxyTemplate">// 添加事务 <property name="target" ><bean class="com.easylife.detail.service.impl.DetailCacheServiceImpl"><property name="baseDao"> <ref bean="basedao" /></property></bean></property></bean>
可以说SSH+xfire+proxool不管是配置MySql还是oracle除了配置文件上的这点差异外,在具体编写的逻辑代码上基本上一样的。由此看样看出SSH这种框架的优点还是值得学习与推广的。
转载请注明出处:http://blog.csdn.net/wudiwo/article/details/8656934
- 再续SSH+Xfire+Proxool开发框架整合之数据库平台移植
- SSH+Xfire+Proxool开发框架整合(二)
- SSH+Xfire+Proxool开发框架整合(一) 带图
- 自定义PROXOOL监听器整合SSH框架
- SSH整合WebService框架XFire搭建总结
- SSH整合xfire开发web应用
- proxool与ssh整合
- ssh框架整合开发
- Activiti学习文档(一)之整合SSH框架开发
- hibernate之整合proxool
- SSH框架整合开发(SSH框架整合过程)
- SSH整合之框架搭建
- SSH整合之框架搭建 .
- JavaEE之SSH框架整合
- JavaWeb开发之SSH框架整合——Struts2+Spring3+Hibernate3三大框架的整合
- ssh框架整合之spring整合
- ssh框架整合之hibernate整合
- ssh整合之开发步骤
- [android]EditText的一些设置
- 综合问题
- 百度MP3音乐API接口及应用
- 信号量、消息队列和共享内存
- 1040. Longest Symmetric String (25)
- 再续SSH+Xfire+Proxool开发框架整合之数据库平台移植
- Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务
- 1041. Be Unique (20)
- Linux下Java 通过JNI native与C进行交互的方法实现示例
- Spring MVC流程解析
- 学习:java设计模式—Adapter模式
- 1042. Shuffling Machine (20)
- 浅谈spring——Bean的生命周期(二)
- 管理自己[Managing Oneself]