Spring DataSource
2015-12-08 00:00
411 查看
摘要: 参考链接:http://my.oschina.net/xiaomaoandhong/blog/60938?fromerr=yWgpAgj0
何为DataSource
DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法。
作为
实现 DataSource 接口的对象通常在基于JNDI API 的命名服务中注册。
不管通过何种持久化技术,都必须通过数据连接访问数据库,在传统的应用中数据连接可以通过DriverManager获的,
在Spring中,数据连接一般是通过数据源获得的。在以往的应用中,数据源一般是 Web应用服务器提供的。
在Spring中,你不但可以通过JNDI获取应用服务器的数据源,也可以直接在Spring容器中配置数据源,
此外,你还可以 通过代码的方式创建一个数据源,以便进行无依赖的单元测试。
DataSource API定义:
在Spring中配置Datasource
1、JDBC
Spring本身也提供了一个简单的数据源实现类DriverManagerDataSource ,
它位于org.springframework.jdbc.datasource包中。这个类实现了javax.sql.DataSource接口,
但它并没有提供池化连接的机制,每次调用getConnection()获取新连接时,只是简单地创建一个新的连接。
因此,这个数据源类比较适合在单元测试 或简单的独立应用中使用,因为它不需要额外的依赖类。
DriverManagerDataSource建立连接是只要有连接就新建一个connection,根本没有连接池的作用。
Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。
2、DBCP
DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖 Jakarta commons-pool对象池机制的数据库连接池, 所以在类路径下还必须包括/lib/jakarta- commons/commons-pool.jar。
dataSource = org.apache.commons.dbcp.BasicDataSource
BasicDataSource提供了close()方法关闭数据源,所以必须设定destroy-method=”close”属性,
以便Spring容器关闭时,数据源能够正常关闭。除以上必须的数据源属性外,还有一些常用的属性:
defaultAutoCommit:设置从数据源中返回的连接是否采用自动提交机制,默认值为 true;
defaultReadOnly:设置数据源是否仅能执行只读操作, 默认值为 false;
maxActive:最大连接数据库连接数,设置为0时,表示没有限制;
maxIdle:最大等待连接中的数量,设置为0时,表示没有限制;
maxWait:最大等待秒数,单位为毫秒, 超过时间会报出错误信息;
validationQuery:用于验证连接是否成功的查询SQL语句,SQL语句必须至少要返回一行数据;
removeAbandoned:是否自我中断,默认是 false ;
removeAbandonedTimeout:几秒后数据连接会自动断开,在removeAbandoned为true,提供该值;
logAbandoned:是否记录中断事件, 默认为 false;
3、C3P0
C3P0是一个开放源代码的JDBC数据源实现项目,C3P0类包位于Spring中lib/c3p0/c3p0-0.9.1.2.jar。
一般在下载hibernate的时候都会自带一个: 在hibernate-release-4.3.0.Final\lib\optional\c3p0路径下找到的。
何为DataSource
DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法。
作为
DriverManager工具的替代项,
DataSource对象是获取连接的首选方法。
实现 DataSource 接口的对象通常在基于JNDI API 的命名服务中注册。
不管通过何种持久化技术,都必须通过数据连接访问数据库,在传统的应用中数据连接可以通过DriverManager获的,
在Spring中,数据连接一般是通过数据源获得的。在以往的应用中,数据源一般是 Web应用服务器提供的。
在Spring中,你不但可以通过JNDI获取应用服务器的数据源,也可以直接在Spring容器中配置数据源,
此外,你还可以 通过代码的方式创建一个数据源,以便进行无依赖的单元测试。
DataSource API定义:
package javax.sql; import java.sql.Connection; import java.sql.SQLException; import java.sql.Wrapper; public interface DataSource extends CommonDataSource,Wrapper { Connection getConnection() throws SQLException; Connection getConnection(String username, String password) throws SQLException; }
在Spring中配置Datasource
1、JDBC
Spring本身也提供了一个简单的数据源实现类DriverManagerDataSource ,
它位于org.springframework.jdbc.datasource包中。这个类实现了javax.sql.DataSource接口,
但它并没有提供池化连接的机制,每次调用getConnection()获取新连接时,只是简单地创建一个新的连接。
因此,这个数据源类比较适合在单元测试 或简单的独立应用中使用,因为它不需要额外的依赖类。
DriverManagerDataSource建立连接是只要有连接就新建一个connection,根本没有连接池的作用。
Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。
2、DBCP
DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖 Jakarta commons-pool对象池机制的数据库连接池, 所以在类路径下还必须包括/lib/jakarta- commons/commons-pool.jar。
dataSource = org.apache.commons.dbcp.BasicDataSource
BasicDataSource提供了close()方法关闭数据源,所以必须设定destroy-method=”close”属性,
以便Spring容器关闭时,数据源能够正常关闭。除以上必须的数据源属性外,还有一些常用的属性:
defaultAutoCommit:设置从数据源中返回的连接是否采用自动提交机制,默认值为 true;
defaultReadOnly:设置数据源是否仅能执行只读操作, 默认值为 false;
maxActive:最大连接数据库连接数,设置为0时,表示没有限制;
maxIdle:最大等待连接中的数量,设置为0时,表示没有限制;
maxWait:最大等待秒数,单位为毫秒, 超过时间会报出错误信息;
validationQuery:用于验证连接是否成功的查询SQL语句,SQL语句必须至少要返回一行数据;
removeAbandoned:是否自我中断,默认是 false ;
removeAbandonedTimeout:几秒后数据连接会自动断开,在removeAbandoned为true,提供该值;
logAbandoned:是否记录中断事件, 默认为 false;
3、C3P0
C3P0是一个开放源代码的JDBC数据源实现项目,C3P0类包位于Spring中lib/c3p0/c3p0-0.9.1.2.jar。
一般在下载hibernate的时候都会自带一个: 在hibernate-release-4.3.0.Final\lib\optional\c3p0路径下找到的。
相关文章推荐
- Java中的函数重载(override)
- Java基础_01
- Java实现RSA数字签名算法
- myeclipse(eclipse)乱码处理
- [转]Spring 和struts 整合的三种方式
- spring 的单例模式
- iterator 标签 详解及双重循环List
- struts2 一些遍历取值标签[转]
- 文件路径正确,报java.io.FileNotFoundException异常
- Spring AOP: Spring之面向方面编程
- org.springframework.beans.TypeMismatchException
- Spring基础问答
- struts2 标签截取字符串
- java.io.NotSerializableException[转]
- java.lang.IllegalStateException[转]
- java学习第七天
- 配置低的电脑取消Eclipse验证js
- Struts2中的ModelDriven机制及其运用
- Struts2的拦截器机制
- Win7使用Hadoop2.7.1-eclipse-plugin插件(2)