`
thrillerzw
  • 浏览: 143808 次
  • 性别: 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 

分享到:
评论

相关推荐

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

    本文主要探讨了三个常用的数据库连接池:DBCP、c3p0和Druid,以及它们的配置说明。 1. **DBCP(Apache Commons DBCP)** DBCP是Apache Commons项目的一部分,它依赖于Apache Commons Pool对象池机制来管理数据库...

    java数据库连接池Druid

    Druid连接池与其他连接池(如C3P0、DBCP等)相比,具有更好的性能和稳定性。 2. **核心特性** - **高性能**: Druid通过预读取、缓存以及空闲连接检测等机制,确保了高效的数据库连接管理。 - **监控**: 内置的...

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

    本资源"03-数据库连接池驱动"包含了三种常用的数据库连接池驱动:C3P0、Druid和DBCP,它们都是为了优化数据库连接管理和复用而设计的。 首先,C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3...

    DBCP数据库连接池

    1. **添加依赖**:在项目中引入DBCP的JAR包,如描述中所提到的"DBCP数据库连接池的完整jar包"。 2. **配置连接池**:创建一个配置文件,设置数据库URL、用户名、密码、驱动类名以及DBCP特定的参数。 3. **初始化...

    dbcp数据库连接池使用jar包

    DBCP数据库连接池的引入,使得应用程序可以预先创建并维护一定数量的数据库连接,当需要与数据库通信时,从连接池中获取一个已存在的连接,用完后不是立即关闭,而是将其归还回连接池,供后续使用。这样减少了频繁的...

    Druid数据库连接池使用

    2. 高效数据库连接池:Druid提供了一个高效、功能强大、可扩展性好的数据库连接池,能够替换DBCP和C3P0等连接池。 3. 数据库密码加密:DruidDriver和DruidDataSource都支持PasswordCallback,能够保护数据库密码,...

    DBCP配置数据库连接池

    DBCP(Database Connection Pool)是Apache软件基金会的Commons项目中的一个组件,它提供了一个数据库连接池服务。...同时,由于DBCP的版本较旧,现在更推荐使用如HikariCP、Druid等性能更好、更稳定的数据库连接池。

    java数据库连接池dbcp

    Java数据库连接池(JDBC Connection Pool)是一种管理资源的技术,用于在多用户环境中高效地...然而,随着技术的发展,现在更推荐使用如HikariCP、Druid等新一代的数据库连接池,它们在性能和稳定性上有着更好的表现。

    JAVA数据库连接池

    在实际开发中,除了C3P0和DBCP,还有其他流行的数据库连接池,如HikariCP、Druid等。这些连接池各有优缺点,选择合适的连接池应根据项目的具体需求来决定。 总的来说,数据库连接池是Java开发中不可或缺的一部分,...

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

    本资源包包含三个主流的数据库连接池实现:c3p0、dbcp和Druid。它们各有特点,适应不同的应用场景。 1. **c3p0**:全称为Com形3P0,是由Miquel Arquero开发的一个开源的JDBC连接池。c3p0提供了完善的连接池管理和...

    druid数据库连接池详细属性配置

    **Druid数据库连接池详细属性配置** Druid是阿里巴巴开源的一款高效、强大的数据库连接池组件,它在性能、监控和扩展性方面表现出色。Druid不仅是一个连接池,还包含了SQL解析器、日志监控、SQL执行效率分析等功能...

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

    在给定的压缩包文件中,我们有两个著名的数据库连接池实现:Druid和DBCP。 首先,让我们详细了解Druid。Druid是由阿里巴巴开源的数据库连接池实现,它具有强大的监控和扩展功能。Druid的核心特性包括: 1. **性能...

    强烈推荐一个简单而实用的数据库连接池工程

    在Java开发中,常见的数据库连接池工具有C3P0、DBCP、HikariCP、Druid等。本文推荐的“简单而实用的数据库连接池工程”可能是指Druid,因为Druid是一个非常受欢迎的开源连接池实现,由阿里巴巴开源社区提供,以其...

    dbcp.rar数据库连接池工具包

    除了DBCP,还有其他流行的数据库连接池实现,比如C3P0、HikariCP、Druid等。它们各有优势,开发者应根据项目需求选择合适的连接池工具。 总结一下,"dbcp.rar"包含的数据库连接池工具包提供了高效的数据库连接管理...

    JAVA 完整的数据库连接池实现

    在 Java 中,有多种流行的数据库连接池实现,如 Apache Commons DBCP、C3P0、HikariCP 和 Druid 等。这里我们将以 HikariCP 为例,讲解如何配置和使用数据库连接池。 1. **HikariCP 简介** HikariCP 是一个高性能...

    数据库连接池相关 jar 包

    同时,随着技术的发展,还有一些其他的数据库连接池实现,如HikariCP、C3P0和Druid等,它们在性能和功能上各有优势,开发者可以根据具体需求选择合适的连接池实现。在实际开发中,还需要关注连接池的监控和调优,...

    数据库连接池DBCP包.7z

    5. **连接池的扩展**:除了DBCP,还有其他流行的连接池实现,如C3P0、HikariCP、Druid等。这些连接池各有优缺点,可以根据实际需求选择合适的连接池。 6. **数据库适配器**:DBCP支持多种数据库,包括MySQL。使用时...

    数据库连接池驱动包_数据库连接池驱动包_

    Druid 是阿里巴巴开源的一个强大、全面且高性能的Java数据库连接池。它不仅提供了基础的连接池功能,还集成了监控、SQL解析、拦截器等功能,可以帮助开发者进行性能分析和问题定位。Druid 还支持多种数据库,包括 ...

    web中常用数据库连接池

    4. Druid:阿里巴巴开源的数据库连接池,除了基本的连接池功能外,还提供了强大的监控和扩展功能,包括SQL解析、执行性能监控、连接健康检查等。 5. Tomcat JDBC Connection Pool:Tomcat服务器自带的数据库连接池...

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

    在Java开发中,有三种常见的数据库连接池实现:DBCP(BasicDataSource)、C3P0以及阿里开源的Druid。下面将详细介绍这三种数据库连接池的实现原理和特性。 1. **DBCP (BasicDataSource)** DBCP 是 Apache Commons ...

Global site tag (gtag.js) - Google Analytics