自定义数据库连接池.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自定义数据库连接池

定义自己的数据库连接池JavaSQLOracle配置管理JDBC这是一个很老的问题-数据库连接池,很多实际开发中都封装了自己的数据库连接访问机制,而数据库连接池是对数据库资源连接利用的一种更有效的管理方式,特别是资源的频繁分配﹑释放的问题。数据库连接池的实现原理就是为数据库连接建立一个“缓冲池”,预先在这个缓冲池中放入一定数量的数据库连接,当我们需要连接时,就从“缓冲池”中取出一个连接,使用完毕之后再放回“缓冲池”中。同时我们通过设置缓冲池的最大个数来防止系统无穷无尽地与数据库连接。在开源世界里,也有很多非常优秀的连接池,例如:C3P0,DBCP,proxool,DBPool等。下面是本人写的一个非常简单的数据库连接池的实现,主要是体会一下数据库连接池的实现原理!1.数据库连接池的实现类:Java代码 package org.hnylj.db.pool; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 定义自己的数据库连接池 * @编写者:hnylj* */ public class DbConnectionPool { private ListConnection pool; private intpoolSize; private Connection conn = null; private static DbConnectionPool instance = null; /** * 单粒模式 * 私有构造方法,获得本类的对象,通过getIstance方法。 */ private DbConnectionPool() { pool = new ArrayListConnection(poolSize); this.createConnection(); } /** * 得到当前连接池的一个实例 */ public static DbConnectionPoolgetInstance() { if (instance == null) { instance = new DbConnectionPool(); } return instance; } /** * 得到连接池中的一个连接 */ public synchronized Connection getConnection() { if (pool.size() 0) { Connection conn = pool.get(0); pool.remove(conn); return conn; } else { return null; } } /** * 创建初始的数据库连接 */ private void createConnection() { MapString,String dbConfig = DbConfig.readDbConfigInfo(); this.poolSize = Integer.parseInt(dbConfig.get(poolSize)); for (inti = 0; i poolSize; i++) { try { Class.forName((String)dbConfig.get(driver)); conn = DriverManager.getConnection((String)dbConfig.get(url), (String)dbConfig.get(username), (String)dbConfig.get(password)); pool.add(conn); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } } /** * 用完将连接放回到连接池中 * @paramconn*/ public synchronized void release(Connection conn) { pool.add(conn); } /** * 关闭连接池中的所有连接 */ public synchronized void closePool() { for (inti = 0; i pool.size(); i++) { try { conn = ((Co

文档评论(0)

guojiahao8 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档