当前位置:  开发笔记 > 编程语言 > 正文

Java中有多少个JDBC连接?

如何解决《Java中有多少个JDBC连接?》经验,为你挑选了3个好方法。

我有一个由大约15种方法组成的Java程序.并且,在程序的执行期间非常频繁地调用这些方法.目前,我正在每个方法中创建一个新连接并在其上调用语句(数据库在网络上的另一台机器上设置).

我想知道的是:我应该在main方法中只创建一个连接,并将其作为参数传递给需要连接对象的所有方法,因为它会显着减少程序中连接对象的数量,而不是创建并且在每种方法中经常关闭连接.

我怀疑我没有使用当前设计非常有效地使用资源,并且考虑到该程序将来可能会增长很多,因此还有很大的改进空间.



1> Neil Coffey..:

是的,您应该考虑重新使用连接,而不是每次都创建一个新连接.通常的程序是:

猜测你的数据库可以合理处理多少个同时连接(例如,在数据库机器上以每个CPU 2或3开始,直到你发现它太少或太多 - 它往往取决于磁盘的方式 - 你的查询是)

创建这么多连接的:本质上是一个类,你可以在每个方法的开头请求"下一个空闲连接",然后在每个方法结束时"回传"到池中

你的getFreeConnection()方法需要返回一个空闲连接(如果有),否则(1)创建一个新连接,最多允许你决定允许的最大连接数,或者(2)如果已经创建了最大连接数,等待一个人获得自由

我建议使用Semaphore类来管理连接; 我实际上在我的网站上有一篇关于使用Semaphore管理资源池的简短文章,我想你可以适应你的目的

一些实际考虑因素:

为了获得最佳性能,您需要注意不要在实际使用它来运行查询时"占用"连接.如果您从池中获取一次连接然后将其传递给各种方法,则需要确保您不会意外地执行此操作.

不要忘记将您的连接返回游泳池!(尝试/终于是你的朋友......)

在许多系统中,您无法"永久"保持连接打开:操作系统将在最长时间后关闭它们.因此,在"返回与池的连接"方法中,您需要考虑已经存在很长时间的"退休"连接(构建一些记忆机制,例如通过在实际JDBC周围设置包装器对象)可用于存储此类指标的连接对象)

您可能需要考虑使用预准备语句.

随着时间的推移,您可能需要调整连接池大小



2> Nemi..:

您可以传递连接,也可以更好地使用Jakarta数据库连接池等. http://commons.apache.org/dbcp/



3> OscarRyz..:

您应该使用连接池.

这样你可以要求连接并在完成后将其释放并将其返回池中

如果另一个线程想要一个新连接并且正在使用该连接,则可以创建一个新连接.如果没有其他线程正在使用连接,则可以重复使用该连接.

这样你就可以以某种方式离开你的应用程序(而不是四处传递连接)并仍然正确地使用资源.

不幸的是,第一类ConnectionPools在独立应用程序中并不是很容易使用(它们是应用程序服务器中的默认设置)可能是一个微容器(如Sping)或一个好的框架(如Hibernate)可以让你使用它.

尽管如此,从头开始编写代码并不难.

:)

此谷歌搜索将帮助您找到有关如何使用它的更多信息.

快速浏览

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有