Java实现数据库连接池.pdfVIP

  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文档。上传文档
查看更多
使用 JAVA 中的动态代理实现数据库连 接池 简介: 通过使用 JAVA 中的动态代理实现数据库连接池,使使用者可以以普通 的 jdbc 连接的使用习惯来使用连接池。 数据库连接池在编写应用服务是经常需要用到的模块,太过频繁的连接数据库 对服务性能来讲是一个瓶颈,使用缓冲池技术可以来消除这个瓶颈。我们可以 在互联网上找到很多关于数据库连接池的源程序,但是都发现这样一个共同的 问题:这些连接池的实现方法都不同程度地增加了与使用者之间的耦合度。很 多的连接池都要求用户通过其规定的方法获取数据库的连接,这一点我们可以 理解,毕竟目前所有的应用服务器取数据库连接的方式都是这种方式实现的。 但是另外一个共同的问题是,它们同时不允许使用者显式的调用 Connection.close() 方法,而需要用其规定的一个方法来关闭连接。这种做法 有两个缺点: 第一:改变了用户使用习惯,增加了用户的使用难度。 首先我们来看看一个正常的数据库操作过程: int executeSQL(String sql) throws SQLException { Connection conn = getConnection(); // 通过某种方式获取数 据库连接 PreparedStatement ps = null; int res = 0; try{ ps = conn.prepareStatement(sql); res = ps.executeUpdate() ; }finally{ try{ ps.close(); }catch(Exception e){} try{ conn.close();// }catch(Exception e){} } return res; } 使用者在用完数据库连接后通常是直接调用连接的方法 close 来释放数据库资 源,如果用我们前面提到的连接池的实现方法,那语句 conn.close() 将被某 些特定的语句所替代。 第二:使连接池无法对之中的所有连接进行独占控制。由于连接池不允许用户 直接调用连接的 close 方法,一旦使用者在使用的过程中由于习惯问题直接关 闭了数据库连接,那么连接池将无法正常维护所有连接的状态,考虑连接池和 应用由不同开发人员实现时这种问题更容易出现。 综合上面提到的两个问题,我们来讨论一下如何解决这两个要命的问题。 首先我们先设身处地的考虑一下用户是想怎么样来使用这个数据库连接池的。 用户可以通过特定的方法来获取数据库的连接,同时这个连接的类型应该是标 准的 java.sql.Connection。用户在获取到这个数据库连接后可以对这个连接 进行任意的操作,包括关闭连接等。 通过对用户使用的描述,怎样可以接管 Connection.close 方法就成了我们这 篇文章的主题。 为了接管数据库连接的 close 方法,我们应该有一种类似于钩子的机制。例如 在 Windows 编程中我们可以利用 Hook API 来实现对某个 Windows API 的接 管。在 JAVA 中同样也有这样一个机制。JAVA 提供了一个 Proxy 类和一个 InvocationHandler,这两个类都在 java.lang.reflect 包中。我们先来看看 SUN 公司提供的文档是怎么描述这两个类的。 public interface InvocationHandler InvocationHandler is the interface implemented by the invocation handler of a proxy instance. Each proxy instance has an associated invocation handler. When a method is invoked on a proxy instance, the method invocation is encoded and dispatched to the invoke method of its invocation handler. SUN 的 API 文档中关于 Proxy 的描述很多,这里就不罗列出来。通过文档对 接口 InvocationHandler 的描述我们可以看到当调用一个 Proxy 实例的方法 时会触发 Invocat

文档评论(0)

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

1亿VIP精品文档

相关文档