转载请注明出处: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>
<!-- 事务的配置 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>
<!-- 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>
<?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