`
thrillerzw
  • 浏览: 139173 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库连接池druid、dbcp

阅读更多

 一、获取连接

druid:

javax.sql.DataSource dataSource = DruidDataSourceFactory.createDataSource(MySqlConfigProperty.getInstance().getProperties());

java.sql.Connection conn = dataSource.getConnection();

dbcp:

javax.sql.DataSource dataSource = BasicDataSourceFactory.createDataSource(MySqlConfigProperty.getInstance().getProperties());

 

二、连接池原理:

配置项中指定了各个参数后,在连接池内部是这么使用这些参数的。数据库连接池在初始化的时候会创建initialSize个连接,当有数据库操作时,会从池中取出一个连接。如果当前池中正在使用的连接数等于maxActive,则会等待一段时间,等待其他操作释放掉某一个连接,如果这个等待时间超过了maxWait,则会报错;如果当前正在使用的连接数没有达到maxActive,则判断当前是否空闲连接,如果有则直接使用空闲连接,如果没有则新建立一个连接。在连接使用完毕后,不是将其物理连接关闭,而是将其放入池中等待其他操作复用。

同时连接池内部有机制判断,如果当前的总的连接数少于miniIdle,则会建立新的空闲连接,以保证连接数得到miniIdle。如果当前连接池中某个连接在空闲了timeBetweenEvictionRunsMillis时间后任然没有使用,则被物理性的关闭掉。有些数据库连接的时候有超时限制(mysql连接在8小时后断开),或者由于网络中断等原因,连接池的连接会出现失效的情况,这时候设置一个testWhileIdle参数为true,可以保证连接池内部定时检测连接的可用性,不可用的连接会被抛弃或者重建,最大情况的保证从连接池中得到的Connection对象是可用的。当然,为了保证绝对的可用性,你也可以使用testOnBorrow为true(即在获取Connection对象时检测其可用性),不过这样会影响性能。

 

三、配置:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
		destroy-method="close">
		<property name="url" value="${url}" />
		<property name="username" value="${username}" />
		<property name="password" value="${password}" />
		<property name="driverClassName" value="${driverClassName}" />
		<property name="filters" value="${filters}" />

		<property name="maxActive" value="${maxActive}" />
		<property name="initialSize" value="${initialSize}" />
		<property name="maxWait" value="${maxWait}" />
		<property name="minIdle" value="${minIdle}" />

		<property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}" />
		<property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}" />

		<property name="validationQuery" value="${validationQuery}" />
		<property name="testWhileIdle" value="${testWhileIdle}" />
		<property name="testOnBorrow" value="${testOnBorrow}" />
		<property name="testOnReturn" value="${testOnReturn}" />
		<property name="maxOpenPreparedStatements"
			value="${maxOpenPreparedStatements}" />
		<property name="removeAbandoned" value="${removeAbandoned}" /> <!-- 打开removeAbandoned功能 -->
	    <property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}" /> <!-- 1800秒,也就是30分钟 -->
	    <property name="logAbandoned" value="${logAbandoned}" /> <!-- 关闭abanded连接时输出错误日志 -->
	</bean>
	
	<bean id="dataSourceDbcp" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">

		<property name="driverClassName" value="${driverClassName}" />
		<property name="url" value="${url}" />
		<property name="username" value="${username}" />
		<property name="password" value="${password}" />
		
		<property name="maxActive" value="${maxActive}" />
		<property name="minIdle" value="${minIdle}" />
		<property name="maxWait" value="${maxWait}" />
		<property name="defaultAutoCommit" value="true" />
		
		<property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}" />
		<property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}" />
		
		<property name="validationQuery" value="${validationQuery}" />
		<property name="testWhileIdle" value="${testWhileIdle}" />
		<property name="testOnBorrow" value="${testOnBorrow}" />
		<property name="testOnReturn" value="${testOnReturn}" />
		<property name="maxOpenPreparedStatements"
			value="${maxOpenPreparedStatements}" />
		<property name="removeAbandoned" value="${removeAbandoned}" /> 
	    <property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}" />
	    <property name="logAbandoned" value="${logAbandoned}" />
	</bean>

	
	<!-- jdbcTemplate -->
	<bean id="jdbc" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
	</bean>

 

 

其它:

druid 教程参考: http://blog.csdn.net/yunnysunny/article/details/8657095

druid-demo:http://git.oschina.net/yunnysunny/druid-demo/repository 

分享到:
评论

相关推荐

    druid.rar阿里巴巴开源数据库连接池

    Druid为监控而生的数据库连接池,它是阿里巴巴开源平台上的一个项目。Druid是Java语言中最好的数据库连接池,Druid能够提供强大的监控和扩展功能.它可以替换DBCP和C3P0连接池。Druid提供了一个高效、功能强大、可...

    常用数据库连接池 (DBCP、c3p0、Druid) 配置说明1

    1. 引 2. 数据库连接池 3. 主要配置说明 2. FindBugs:Java 静态代码检查(3486)

    03-数据库连接池驱动_数据库连接池;驱动_

    提供了数据库连接池的驱动,分别有c3p0、druid、dbcp三种数据库连接池的驱动

    JAVA数据库连接池(C3P0,Druid,JNDI ,DBCP,Proxool,BoneCP)

    JAVA数据库连接池(C3P0,Druid,JNDI ,DBCP,Proxool,BoneCP) 源码包含各个数据库连接池的连接DEMO spring+mybatis+maven

    Druid数据库连接池Jar包

    Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署...

    数据库连接池资源包(c3p0 , dbcp,druid连接池)

    数据库连接池的资源包(c3p0 , dbcp,druid连接池)

    关于数据库连接池Druid使用说明

    根据综合性能,可靠性,稳定性,扩展性,易用性等因素替换成最优的数据库连接池。 Druid:druid-1.0.29 数据库 Mysql.5.6.17 替换目标:替换掉C3P0,用druid来替换 替换原因: 1、性能方面 hikariCP&gt;druid&gt;tomcat-...

    JDBC专题(七)-数据库连接池 DataSource Pool.docx

    使用数据库连接池优化程序性能 2.1.数据库连接池的基本概念 3.自定义数据连接池 4.开源数据库连接池(第三方企业中使用的连接池) 4.1.DBCP数据源 4.2.C3P0连接池 4.3.Druid连接池 4.3.1.druid...

    数据库连接池架包druid-1.1.6,dbcp

    数据库连接池架包,主要包含了druid和dbcp,其中druid的架包不是很全,主要dbcp的包是全的,可以使用,我自己试过。

    阿里druid数据库连接池

    阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好。

    数据库连接池的三种实现方法

    数据库连接池的三种不同方法的实现,dbcp、c3p0、阿里的druid的方法,其中druid的实现方式是最好的也是使用范围最广的。

    c3p0,dbcp,druid连接池

    c3p0-0.9.5.1,commons-dbcp-1.4,commons-pool-1.3,druid-1.0.26,junit-4.7等jar包,可供选择,一般在后期做项目的时候都离不开,必定会用到一个连接池,c3p0、或者阿里巴巴的druid、或者dbcp,dbcp很少用

    数据库连接池驱动程序包

    包含C3P0、DBCP、Druid三种数据库连接池驱动程序

    数据库连接池

    C3P0与DBCP数据库连接池,阿里的Druid数据源配置入门.....

    druid-1.0.19

    Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。 Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模...

    Druid是一个JDBC组件,它包括三部分 高效可管理的数据库连接池.rar

    DruidDataSource 高效可管理的数据库连接池。 SQLParser Druid可以做什么? 1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问...

    druid-0.2.20

    Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。 Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模...

    阿里巴巴的开源项目JDBC连接池、监控组件 Druid.zip

    Druid是阿里巴巴的一款java开源的为监控而生的数据库连接池组件。Druid是一个JDBC组件,它包括三部分: DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。 DruidDataSource 高效可管理的数据库...

    JDBC常用连接池 c3p0 BDCP Druid

    DBCP (Database Connection Pool)是一个依赖Jakarta commons-pool对象池机制的数据库连接池,Tomcat的数据源使用的就是DBCP。目前 DBCP 有两个版本分别是 1.3 和 1.4。1.3 版本对应的是 JDK 1.4-1.5 和 JDBC 3,而...

    druid各版本jar包

    Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。

Global site tag (gtag.js) - Google Analytics