首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

配备一个数据源

2012-08-15 
配置一个数据源配置一个数据源 ??? Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBC

配置一个数据源

配置一个数据源
??? Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源。

?DBCP数据源
??? DBCP类包位于 <spring_home></spring_home>/lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖 Jakarta commons-pool对象池机制的数据库连接池,所以在类路径下还必须包括<spring_home></spring_home>/lib/jakarta- commons/commons-pool.jar。下面是使用DBCP配置MySql数据源的配置片断:


?获取JNDI数据源
??? 如果应用配置在高性能的应用服务器(如WebLogic或Websphere等)上,我们可能更希望使用应用服务器本身提供的数据源。应用服务器的数据源 使用JNDI开放调用者使用,Spring为此专门提供引用JNDI资源的JndiObjectFactoryBean类。下面是一个简单的配置:

xml 代码
  1. <bean?id="dataSource"?class="org.springframework.jndi.JndiObjectFactoryBean">??? ??????<property?name="jndiName"?value="java:comp/env/jdbc/bbt"/>??? ??
  2. </bean>??

通过jndiName指定引用的JNDI数据源名称。
??? Spring 2.0为获取J2EE资源提供了一个jee命名空间,通过jee命名空间,可以有效地简化J2EE资源的引用。下面是使用jee命名空间引用JNDI数据源的配置:

xml 代码
  1. <beans?xmlns=http://www.springframework.org/schema/beans? ??xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance? ??
  2. xmlns:jee=http://www.springframework.org/schema/jee? ??xsi:schemaLocation="http://www.springframework.org/schema/beans?? ??
  3. http://www.springframework.org/schema/beans/spring-beans-2.0.xsd?? ??http://www.springframework.org/schema/jee? ??
  4. http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">??? ??<jee:jndi-lookup?id="dataSource"?jndi-name="?java:comp/env/jdbc/bbt"/>??? ??
  5. </beans>??

Spring的数据源实现类
??? Spring本身也提供了一个简单的数据源实现类DriverManagerDataSource ,它位于org.springframework.jdbc.datasource包中。这个类实现了javax.sql.DataSource接口,但 它并没有提供池化连接的机制,每次调用getConnection()获取新连接时,只是简单地创建一个新的连接。因此,这个数据源类比较适合在单元测试 或简单的独立应用中使用,因为它不需要额外的依赖类。
???? 下面,我们来看一下DriverManagerDataSource的简单使用:当然,我们也可以通过配置的方式直接使用DriverManagerDataSource。

java 代码
  1. DriverManagerDataSource?ds?=?new?DriverManagerDataSource?();??? ??ds.setDriverClassName("com.mysql.jdbc.Driver");??? ??
  2. ds.setUrl("jdbc:mysql://localhost:3309/sampledb");??? ??ds.setUsername("root");??? ??
  3. ds.setPassword("1234");??? ??Connection?actualCon?=?ds.getConnection();??

?

小结

??? 不管采用何种持久化技术,都需要定义数据源。Spring附带了两个数据源的实现类包,你可以自行选择进行定义。在实际部署时,我们可能会直接采用应用服 务器本身提供的数据源,这时,则可以通过JndiObjectFactoryBean或jee命名空间引用JNDI中的数据源。

DBCP与C3PO配置的区别:

C3PO :DBCP:

xml 代码
  1. <bean?id="dataSource"?class="com.mchange.v2.c3p0.ComboPooledDataSource"?destroy-method="close">??????<property?name="driverClass">??
  2. ????????<value>oracle.jdbc.driver.OracleDriver</value>??????</property>??
  3. ????<property?name="jdbcUrl">?????????? ??????????<value>jdbc:oracle:thin:@10.10.10.6:1521:DataBaseName</value>??
  4. ?????</property>??????<property?name="user">??
  5. ????????<value>testAdmin</value>??????</property>??
  6. ????<property?name="password">??????????<value>123456</value>??
  7. ????</property>??</bean>??

?

xml 代码
  1. <bean?id="dataSource"?class="org.apache.commons.dbcp.BasicDataSource"?destroy-method="close">??????<property?name="driverClassName">??
  2. ????????<value>oracle.jdbc.driver.OracleDriver</value>??????</property>??
  3. ????<property?name="url">?????????? ??????????<value>jdbc:oracle:thin:@10.10.10.6:1521:DataBaseName</value>??
  4. ?????</property>??????<property?name="username">??
  5. ????????<value>testAdmin</value>??????</property>??
  6. ????<property?name="password">??????????<value>123456</value>??
  7. ????</property>??</bean>??

热点排行