读书人

分析共享Spring配置数据源四种模式(附

发布时间: 2012-08-21 13:00:21 作者: rapoo

分析共享Spring配置数据源四种方式(附相应jar包)

使用spring框架时,平常你都使用那种数据源呢?spring常用的四种配置数据源方式。

以下使用Oracle10g版本作为例子。

第一种:使用spring自带的DriverManagerDataSource

配置文件如下:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property><property name="url"><value>jdbc:oracle:thin:@192.168.24.102:1521:sms</value></property><property name="username"><value>test</value></property><property name="password"><value>test</value></property></bean>  </beans>

第二种:DBCP数据源。

需要下载的jar包:commons-commons-spring的配置文件中如下:

  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"                    destroy-method="close">                <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />               <property name="url" value="jdbc:oracle:thin:@192.168.24.102:1521:sms" />               <property name="username" value="test"/>               <property name="password" value="test" />           </bean>

第三种:C3P0数据源。

配置文件中如下:

 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"                    destroy-method="close">      <property name="driverClass" value="oracle.jdbc.driver.OracleDriver" /><property name="jdbcUrl" value="jdbc:oracle:thin:@192.168.24.102:1521:sms " /><property name="user" value="test" /><property name="password" value="test" />  </bean>

在配置c3p0数据源时,折腾许久,一直提示这个错误:

   java.sql.SQLException: No suitable driverat java.sql.DriverManager.getDriver(Unknown Source)at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:224)at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

上网查阅很多资料,发现很多人同样为这个问题头疼,并且也给出了相应的解决办法,这个问题提示驱动不对,但是网上解决办法往往都是配置文件中的xml书写问题,若你在配置过程中出现此问题的话,可以参考http://jdbc书写马虎,导致此问题出现。o()o唉

第四种:使用hibernate数据源

需要hiberante核心jar包。

目前三大框架较流行,spring一般与hiberante做搭档,数据库连接方式写在hiberante的配置文件中,在spring管理hibernate中的配置文件中,直接读取hibernate核心配置文件即可。

其中读取hibernate数据源与访问dao层的方式是配置在一块的。配置如下:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocations">   <list>      <value>classpath:com/config/hibernate.cfg.xml</value>   </list> </property> <property name="mappingLocations"> <!-- 所有的实体类映射文件 --><list><value>classpath:com/hibernate/*.hbm.xml</value></list></property>

这是常用的几种配置方式,数据源配置好了,下一步是读取Dao层,使用spring如何读取dao层呢?

PS:DBCP数据源需要的jar包下载http://download.csdn.net/detail/llhhyy1989/4496980

C3P0数据源需要的jar包下载http://download.csdn.net/detail/llhhyy1989/4496988

8楼lidonglong1214分钟前
好!多写点~
7楼wangyuetingtao10小时前
繁琐的配置带来高度灵活……
Re: lidonglong1215分钟前
回复wangyuetingtaon我们现在的项目,正在繁琐的配置中
6楼lsh668810小时前
就会两种 jdbc和hibernate,jdbc默认自动提交事务,如果使用hibernate spring不提交事务,必须配置事务才能提交到数据库,这个是他们的区别
5楼lfsfxy9昨天 22:26
现在看来框架离不开配置文件啦,简洁轻便。
4楼smszhuang168昨天 21:49
好配置,好文章!
3楼zhaodandan19910306昨天 21:46
我们公司用的是第一种
2楼mocah_zzz昨天 21:37
thanks
1楼lsh6688昨天 17:50
请楼主说明一下这个几个的用处,一般用到那里

读书人网 >Web前端

热点推荐