2

我正在阅读有关处理 jdbc 连接的 c3p0 和 dbcp 并听到很多问题,人们说 dbcp 已死,但 c3p0 不能执行 jdbc4 等等。但我不知道这些帖子是否已过时。

现在我点击了 BoneCP,它解释了如何在此处处理断开的连接。连接被包装,并且 BoneCP 在异常传递给应用程序之前对其进行一些预检查。如果连接出现问题,BoneCP 会将其从池中删除。

1.) 所有这些池都有这种连接处理吗?

2.)这个问题被一遍又一遍地问到,但我找不到 2011 年的任何答案。我应该为新应用程序使用什么,这将在未来 10 年(如果不是更多的话)中保持。

4

1 回答 1

2

1.) 我不知道 dbcp,但关于 C3P0,这个功能确实存在于 C3P0PooledConnection 类中(查看调用方法,异常被捕获并处理,如果您想了解更多关于确切处理的详细信息,我可以添加它们)。我还需要知道它是否包含它以删除 testOnCheckin/Checkout 并且我验证它包含此行为。

2.) 真的很难说,因为一方面 C3P0 在许多生产站点中被广泛使用,并且维护者已经恢复了积极的开发,但另一方面 BoneCP 似乎有一些非常有趣的设计原则(例如池分片)和一些讨人喜欢的基准。由于您的连接池库通常具有很好的间接性(大多数依赖项包含在一个或两个配置文件中),因此我建议您从一个开始,一旦您有一个包含实际数据的产品,请尝试对其进行优化并将其与另一个库(当然也优化了)。您选择的任何一个库都可能足以满足您的需求。

于 2013-04-25T08:05:07.053 回答