java,jdbc数据库连接池总结!.docx
文本预览下载声明
java,jdbc数据库连接池总结!
JDBC数据库连接池的研究与实现 摘要传统的JDBc访问数据库,由于频繁分配与释放内存、连接不能及时关闭而产生内存泄露,从而降低系统性能,本文针对这些问题,研究并实现了使用连接池管理连接对象的管理方式,避免了内存泄露的产生,有效地管理了连接对象,提高了系统性能。 关键词JDBC;连接池;引用计数;线程同步 引言 使用JDBC访问数据库时,先加载相应驱动,接着创建连接对象,向连接对象发送SQL语句访问数据库,使用完毕后关闭连接对象。普通WEB应用访问数据库的频率低,可以满足要求。但如果客户端数量非常多,系统会不断创建、关闭连接,频繁进行内存操作,影响系统性能。另外,程序异常可能导致系统不能及时释放连接对象,产生内存泄露,导致内存资源耗尽。为了解决这些问题。可以采用连接池技术,从而减少不必要系统开销,避免内存泄露。提高系统性能。 1连接池原理 连接池技术原理是预先创建容器对象,并放人一些连接对象。需要使用连接对象时,直接从连接池中获取。用完后不关闭连接对象。将其放回连接池。连接池可以通过设置最少连接数和最大连接数来保持可用对象数量和避免无限制使用连接对象。 2连接池设计 1)建立连接池。连接池的基本功能就是管理连接对象。创建连接池时,可以预先分配指定数量的连接对象放入集合类中,分配和释放都将对集合类进行操作,可以减少由频繁内存操作带来的系统开销。 Java数据库连接池超强方法! 分类:java技术 网上看到一位大牛写的连接类。此类非常简单,免去了网上众多资料里所说的麻烦的tomcat配置,更强的是它可以通用!不仅oracle,mysql,sqlserverXX都行,因为它依据的是你自己连接数据库的驱动。当然首先你要保证你拥有一个能连接自己数据库的对应驱动类。如下面以mysql为例: 先附上牛人的原码:来自“豆豆在线” packagemyDB; import*; import*; import*; import; /** *管理类DBConnectionManager支持对一个或多个由属性文件定义的数据库连接 *池的访问.客户程序可以调用getInstance()方法访问本类的唯一实例.*/ publicclassDBConnectionManager{ staticprivateDBConnectionManagerinstance;//唯一实例staticprivateintclients; privateVectordrivers=newVector(); privatePrintWriterlog; privateHashtablepools=newHashtable(); /** *返回唯一实例.如果是第一次调用此方法,则创建实例 * *@returnDBConnectionManager唯一实例 */ staticsynchronizedpublicDBConnectionManagergetInstance(){if(instance==null){ instance=newDBConnectionManager(); } clients++; returninstance; } /** *建构函数私有以防止其它对象创建本类实例 */ privateDBConnectionManager(){ init(); } /** *将连接对象返回给由名字指定的连接池 * *@paramname在属性文件中定义的连接池名字 *@paramcon连接对象 */ publicvoidfreeConnection(Stringname,Connectioncon){DBConnectionPoolpool=(DBConnectionPool)(name);if(pool!=null){ (con); } } /** *获得一个可用的(空闲的)连接.如果没有可用连接,且已有连接数小于最大连接数 *限制,则创建并返回新连接 * *@paramname在属性文件中定义的连接池名字 *@returnConnection可用连接或null */ publicConnectiongetConnection(Stringname){ DBConnectionPoolpool=(DBConnectionPool)(name);if(pool!=null){ return(); } returnnull; } /** *获得一个可用连接.若没有
显示全部