`
liufei.fir
  • 浏览: 687552 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

自己开发了一个数据库连接池,与大家分享,高手指教

阅读更多
只要说一下它的使用,源码给大家
先说说使用:
package org.liufei.test;

import org.liufei.common.DBCP;
import org.liufei.dbcp.connectionFactory.ConnectionFactory;
import org.liufei.dbcp.connectionFactory.DbcpConnection;


public class Test {
	public static void main(String[] args) {
		DbcpConnection test = ConnectionFactory.getDbcpConnection(DBCP.MICROSOFT);
		try {
			for(int i = 0 ;i < 20000000; i++){
				System.out.println(test.getConnection());
			}
			test.destroy() ;
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


极限测试:
mysql上限:7804,超过了会报IO异常。
oracle上限:300,超过了会报打开游标数目过大
SqlServer上限:好像是越多越好,真是韩信用兵,多多益善,我设置了1000000还没有报错,实在不想再等了,呵呵

但是我还是会选择使用oracle。

获取不同的数据库连接池有下面一个枚举类选择:
package org.liufei.common;
/**
 * 选择加载的数据库连接池类型
 * @author 刘飞
 *
 */
public enum DBCP {
	MICROSOFT, MYSQL, ORACLE ;
}


连接池接口:
package org.liufei.dao;

import java.io.Serializable;
import java.sql.Connection;


public interface PoolManager extends Serializable {
	
	/**
	 * connection连接对象池初始化 
	 * @return
	 * @throws Exception
	 */
	public boolean initialize() throws Exception ;
	
	/**
	 * connection连接对象池的销毁
	 * @throws Exception
	 */
	public void destroy() throws Exception ;
	
	/**
	 * 取一个空闲可用的connection连接对象 
	 * @return
	 * @throws Exception
	 */
	public Connection getConnection() throws Exception ;
	
	/**
	 * 把一个connection连接对象从连接对象池中删除 
	 * @throws Exception
	 */
	public void removeFromPool() throws Exception ;
	
	/**
	 * 维护connection连接对象池大小 
	 * @throws Exception
	 */
	public void fillPool() throws Exception ;
	
	/**
	 * 将一个使用过的活跃连接(connection)返还给连接池。
	 * @param connection
	 * @throws Exception
	 */
	public void close(Connection connection) throws Exception ;
	
	/**
	 * 定时器事件
	 * @throws Exception
	 */
	public void timerEvent() throws Exception ;
}


连接池管理接口:
package org.liufei.dbcp.connectionFactory;

import java.io.Serializable;
import java.sql.Connection;

/**
 * 连接池管理接口
 * @author 刘飞
 *
 */
public interface DbcpConnection extends Serializable {

	/**
	 * 将一个使用过的活跃连接(connection)返还给连接池。
	 * @param connection
	 * @throws Exception
	 */
	public void close(Connection connection) throws Exception ;
	
	/**
	 * connection连接对象池的销毁
	 * @throws Exception
	 */
	public void destroy() throws Exception ;
	
	/**
	 * 取一个空闲可用的connection连接对象 
	 * @return
	 * @throws Exception
	 */
	public Connection getConnection() throws Exception ;
	
	/**
	 * 检测本地系统上安装的数据库系统,并生成相应的配置文件,
	 * 如果本地计算机上安装了多个数据库系统,则生成是有相应的配置文件
	 */
	public void getConfFiles() ;
	
}

连接池管理接口工厂:
package org.liufei.dbcp.connectionFactory;

import java.io.Serializable;

import org.liufei.common.DBCP;

public class ConnectionFactory implements Serializable{
	private static final long serialVersionUID = 102400L;

	private ConnectionFactory() {
		super();
	}

	/**
	 * 获取数据库连接池管理接口
	 * @return DbcpConnection
	 */
	public static DbcpConnection getDbcpConnection(DBCP dbcpparam){
		return new DbcpConnectionImpl(dbcpparam) ;
	}
}


代码如下,供大家下载(有jar和javadoc文档以及属性配置文件):
说明:使用时一定要导入相应的数据库jdbcjar包
分享到:
评论

相关推荐

    C# 数据库连接池 C# 数据库连接池

    数据库连接池是数据库管理中的一个重要概念,它在C#编程中扮演着优化数据库操作的关键角色。C#数据库连接池是一种管理数据库连接的技术,通过复用已存在的连接而不是每次请求时都创建新的连接,从而提高数据库操作的...

    C#高效数据库连接池源码

    `Demo`可能是一个示例应用程序,展示如何使用自定义的数据库连接池。 5. **连接池实现细节**: - **初始化**:在应用程序启动时,连接池会被初始化,预创建一定数量的数据库连接。 - **连接分配**:当应用程序...

    数据库连接池技术详解

    对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。 在较为完备的数据库连接池实现中,可根据...

    Java jdbc数据库连接池总结

    连接池的基本工作原理是:当应用程序需要建立数据库连接时,连接池管理器会检查当前是否有可用的连接,如果有,则返回一个可用的连接对象;否则,连接池管理器将创建一个新的连接对象,并将其添加到连接池中。应用...

    数据库连接池java代码实现

    连接池的基本思想是维护一组预初始化的数据库连接,当应用程序需要时,可以从池中获取一个连接,使用完毕后,再归还回池,而不是直接关闭。这样可以显著减少数据库连接的创建和关闭时间,提升系统的响应速度和并发...

    常用jdbc数据库连接jar包,数据库连接池jar包

    数据库连接池在初始化时会创建一定数量的数据库连接并保存起来,当应用程序需要连接时,可以从池中获取一个已存在的连接,而不是每次都去新建,用完后也不立即关闭,而是归还给连接池。这样可以显著减少建立和释放...

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

    数据库连接池是现代应用程序开发中的重要组成部分,尤其是在处理大量数据交互的应用中,它极大地提高了数据库操作的效率和系统的稳定性。本资源"03-数据库连接池驱动"包含了三种常用的数据库连接池驱动:C3P0、Druid...

    c# mysql数据库连接池实现

    在C#编程环境中,开发人员经常需要与各种数据库进行交互,MySQL是其中之一。在.NET Core 2.1框架下,可以使用.NET Standard库来实现高效、优化的数据库连接管理,特别是通过连接池来提高性能。本文将深入探讨如何在...

    Qt 多线程连接数据库——数据库连接池

    * 数据库连接池特点: * 获取连接时不需要了解连接的名字,连接池内部维护连接的名字 * 支持多线程,保证获取到的连接一定是没有被其他线程正在使用 * 按需创建连接,可以创建多个连接,可以控制连接的数量 * 连接...

    C# 数据库连接池

    数据库连接池是一组预先初始化的数据库连接,当程序需要与数据库建立连接时,可以从池中获取一个已经存在的连接,而不是每次都创建新的连接。使用完毕后,连接不会立即关闭,而是返回到连接池中供后续使用。这样可以...

    自己写的数据库连接池(java)

    在给定的标题“自己写的数据库连接池(java)”中,我们可以推测这是一个用户自定义的数据库连接池实现,可能是为了学习或实践目的。描述提到的“XML版读取属性文件”和“普通的”,暗示了两种不同的配置方式,一种是...

    JAVA数据库连接池

    Java数据库连接池是Java开发中一个非常重要的技术,它主要用于管理数据库连接,提高数据库操作的效率和性能。在Java应用程序中,频繁地创建和关闭数据库连接会导致大量的系统资源浪费,而连接池则可以复用已建立的...

    delphi实现数据库连接池

    在Delphi这个强大的Windows应用程序开发环境中,实现数据库连接池能够有效地解决频繁创建和销毁数据库连接带来的性能问题。下面我们将详细探讨如何在Delphi中实现数据库连接池,以及其核心概念和优势。 数据库连接...

    delphi数据库连接池

    Delphi数据库连接池是一种高效的数据库资源管理技术,它允许应用程序在多用户环境下共享数据库连接,以提高性能并减少系统资源的消耗。连接池的核心思想是重用已建立的数据库连接,而不是每次需要时都创建新的连接,...

    自己写的数据库连接池

    数据库连接池是应用程序管理数据库连接的一种机制,它在多个并发请求之间共享数据库连接,从而减少了创建和销毁数据库连接的开销。在这个项目中,你使用Java实现了一个自定义的数据库连接池,应用了代理模式来优化...

    配置数据库连接池

    数据库连接池的基本思想是预先创建并维护一定数量的数据库连接,当应用需要与数据库通信时,可以快速地从连接池中获取一个已建立的连接,而不是每次都新建一个。用完后,连接会归还到池中,供其他请求使用,而不是...

    java数据库连接池

    当应用程序请求数据库连接时,连接池会提供一个现有的连接,而无需重新建立一个新的连接。这种方式大大减少了数据库连接的创建和销毁次数,从而提高了应用程序的性能和响应速度。 知识点二:数据库连接池的重要性 1...

Global site tag (gtag.js) - Google Analytics