首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混合使用基本DataSource和连接池DataSource:何时调用close()?

混合使用基本DataSource和连接池DataSource:何时调用close()?
EN

Stack Overflow用户
提问于 2010-02-24 04:18:34
回答 1查看 1.6K关注 0票数 0

我正在向我们的java应用程序添加连接池。

该应用程序可以与不同的rdbmses一起使用,并且既可以作为桌面应用程序,也可以作为无头work服务。基本实现在桌面模式下工作良好(rdbms = derby)。当作为we服务(rdbms = mysql)运行时,我们看到需要连接池来获得良好的并发行为。

我最初的方法是在启动时使用依赖注入来决定是基本DataSource还是连接池DataSource。

这个场景中的问题是我不知道什么时候调用connection.close()。我的理解是,在使用连接池时,应该在每次查询后关闭(),以便可以回收连接对象。但是当前的非池化实现试图尽可能长时间地保持连接对象。

有没有解决这个问题的办法?有没有办法回收一个基本的连接对象?如果我不使用线程池连接对象调用connection.close()会发生什么?

或者,将这两种连接策略混合在一起仅仅是一个糟糕的设计?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-24 04:25:28

如果我没理解错的话,基本上你是通过尽可能长时间地保持连接来实现你自己的池化实现。如果这个策略是成功的(即程序的行为与您所描述的一样),那么您已经拥有了自己的池。添加一个池能给你带来的唯一好处是,当你建立一个新的连接时,可以缩短响应时间(因为你不会真的建立一个连接,你会从池中得到它),这显然不是经常发生的。

因此,我将回到这个问题背后的假设:实际上,您的并发性能问题与数据库池有关吗?如果您在MySQL中使用事务,而不是在Derby中,这可能是并发问题的一个主要原因,作为另一个潜在原因的示例。

要直接回答您的问题,请始终使用数据库池。它们的开销很小,当然,更改代码以快速释放连接(例如,当请求完成时,不是只要用户打开了屏幕),而不是永远保持连接。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2321403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档