Spring DataSource

何为DataSourcejava

DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了链接到数据源的另外一种方法。 
做为 DriverManager 工具的替代项,DataSource 对象是获取链接的首选方法。 
实现 DataSource 接口的对象一般在基于JNDI API 的命名服务中注册。spring

无论经过何种持久化技术,都必须经过数据链接访问数据库,在传统的应用中数据链接能够经过DriverManager获的, 
在Spring中,数据链接通常是经过数据源得到的。在以往的应用中,数据源通常是 Web应用服务器提供的。 
在Spring中,你不但能够经过JNDI获取应用服务器的数据源,也能够直接在Spring容器中配置数据源, 
此外,你还能够 经过代码的方式建立一个数据源,以便进行无依赖的单元测试。sql

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中配置Datasourceapache

一、JDBC服务器

Spring自己也提供了一个简单的数据源实现类DriverManagerDataSource , 
它位于org.springframework.jdbc.datasource包中。这个类实现了javax.sql.DataSource接口, 
但它并无提供池化链接的机制,每次调用getConnection()获取新链接时,只是简单地建立一个新的链接。 
所以,这个数据源类比较适合在单元测试 或简单的独立应用中使用,由于它不须要额外的依赖类。app

DriverManagerDataSource创建链接是只要有链接就新建一个connection,根本没有链接池的做用。工具

Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。 单元测试

二、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; 

三、C3P0

C3P0是一个开放源代码的JDBC数据源实现项目,C3P0类包位于Spring中lib/c3p0/c3p0-0.9.1.2.jar。

通常在下载hibernate的时候都会自带一个: 在hibernate-release-4.3.0.Final\lib\optional\c3p0路径下找到的。  

相关文章
相关标签/搜索