配备一个数据源
配置一个数据源配置一个数据源 ??? 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 代码
- <bean?id="dataSource"?class="org.springframework.jndi.JndiObjectFactoryBean">??? ??????<property?name="jndiName"?value="java:comp/env/jdbc/bbt"/>??? ??
- </bean>??
通过jndiName指定引用的JNDI数据源名称。
??? Spring 2.0为获取J2EE资源提供了一个jee命名空间,通过jee命名空间,可以有效地简化J2EE资源的引用。下面是使用jee命名空间引用JNDI数据源的配置:
xml 代码
- <beans?xmlns=http://www.springframework.org/schema/beans? ??xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance? ??
- xmlns:jee=http://www.springframework.org/schema/jee? ??xsi:schemaLocation="http://www.springframework.org/schema/beans?? ??
- http://www.springframework.org/schema/beans/spring-beans-2.0.xsd?? ??http://www.springframework.org/schema/jee? ??
- http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">??? ??<jee:jndi-lookup?id="dataSource"?jndi-name="?java:comp/env/jdbc/bbt"/>??? ??
- </beans>??
Spring的数据源实现类
??? Spring本身也提供了一个简单的数据源实现类DriverManagerDataSource ,它位于org.springframework.jdbc.datasource包中。这个类实现了javax.sql.DataSource接口,但 它并没有提供池化连接的机制,每次调用getConnection()获取新连接时,只是简单地创建一个新的连接。因此,这个数据源类比较适合在单元测试 或简单的独立应用中使用,因为它不需要额外的依赖类。
???? 下面,我们来看一下DriverManagerDataSource的简单使用:当然,我们也可以通过配置的方式直接使用DriverManagerDataSource。
java 代码
- DriverManagerDataSource?ds?=?new?DriverManagerDataSource?();??? ??ds.setDriverClassName("com.mysql.jdbc.Driver");??? ??
- ds.setUrl("jdbc:mysql://localhost:3309/sampledb");??? ??ds.setUsername("root");??? ??
- ds.setPassword("1234");??? ??Connection?actualCon?=?ds.getConnection();??
?
小结
??? 不管采用何种持久化技术,都需要定义数据源。Spring附带了两个数据源的实现类包,你可以自行选择进行定义。在实际部署时,我们可能会直接采用应用服 务器本身提供的数据源,这时,则可以通过JndiObjectFactoryBean或jee命名空间引用JNDI中的数据源。
DBCP与C3PO配置的区别:
C3PO :DBCP:
xml 代码
- <bean?id="dataSource"?class="com.mchange.v2.c3p0.ComboPooledDataSource"?destroy-method="close">??????<property?name="driverClass">??
- ????????<value>oracle.jdbc.driver.OracleDriver</value>??????</property>??
- ????<property?name="jdbcUrl">?????????? ??????????<value>jdbc:oracle:thin:@10.10.10.6:1521:DataBaseName</value>??
- ?????</property>??????<property?name="user">??
- ????????<value>testAdmin</value>??????</property>??
- ????<property?name="password">??????????<value>123456</value>??
- ????</property>??</bean>??
?
xml 代码
- <bean?id="dataSource"?class="org.apache.commons.dbcp.BasicDataSource"?destroy-method="close">??????<property?name="driverClassName">??
- ????????<value>oracle.jdbc.driver.OracleDriver</value>??????</property>??
- ????<property?name="url">?????????? ??????????<value>jdbc:oracle:thin:@10.10.10.6:1521:DataBaseName</value>??
- ?????</property>??????<property?name="username">??
- ????????<value>testAdmin</value>??????</property>??
- ????<property?name="password">??????????<value>123456</value>??
- ????</property>??</bean>??