我看到有人使用org.apache.commons.dbcp.BasicDataSource,而其他配置使用com.mchange.v2.c3p0.ComboPooledDataSource

Spring有其自己的:org.springframework.jdbc.datasource.DriverManagerDataSource
可能还有更多。但是哪一个最好呢?我有一个需要连接池的JPA/Hibernate三层应用程序,但看起来它们都支持此连接...。

最佳答案



org.springframework.jdbc.datasource.DriverManagerDataSource 类实现了 DataSource 接口(interface),但是不是连接池,它只是一个方便的类,可以在开发过程中使用,而不是在实际的池中使用(但它会在每次调用时创建一个新的连接)。我建议阅读它的javadoc



如果使用的是应用程序服务器,请支持应用程序服务器的连接池。

如果不是,那么DBCP,C3P0是最常见的解决方案。我将使用C3P0(实际上现在与Hibernate捆绑在一起,而不是DBCP),我在高负载而不是C3P0时遇到DBPC的一些死锁问题,因此我倾向于使用C3P0。

可能值得注意的是,经过长时间的不事件(C3P0处于不事件状态)之后,DBCP已在最近恢复了运行,因此可能会变得更好。

其他参与者包括ProxoolBoneCP(最近的新竞争对手)。后者看起来很有趣,但是我没有任何实践经验。

无论如何,通常应在投入生产之前运行鲁棒性测试。

也可以看看

  • Connection pooling options with JDBC: DBCP vs C3P0
  • 关于xml - 最佳JDBC数据源bean类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2986038/

    10-12 04:05