我看到有些人使用 org.apache.commons.dbcp.BasicDataSource
而其他配置有 com.mchange.v2.c3p0.ComboPooledDataSource
。
Spring 有自己的:org.springframework.jdbc.datasource.DriverManagerDataSource
可能还有更多。但哪个最好?我有一个需要连接池的 JPA/Hibernate 三层应用程序,但看起来它们都支持这个....
最佳答案
Spring has its own: org.springframework.jdbc.datasource.DriverManagerDataSource
类(class)org.springframework.jdbc.datasource.DriverManagerDataSource
实现 DataSource
接口(interface),但不是连接池,它只是一个方便的类,可以在开发期间使用而不是真正的池(但它会在每次调用时创建一个新连接)。我建议阅读它的 javadoc .
I have a JPA/Hibernate three tier application that needs connection pooling, but it looks like that all support this....
如果您使用的是应用服务器,请使用应用服务器的连接池。
如果您不是,那么 DBCP、C3P0 是最常见的解决方案。 我 会使用 C3P0(实际上现在与 Hibernate 捆绑在一起,而不是 DBCP),我在高负载下遇到了 DBPC 的一些死锁问题,而不是 C3P0,所以我更喜欢 C3P0。
可能值得注意的是,DBCP 在长时间不活动(而 C3P0 处于不活动状态)后最近又复活了,因此可能会变得更好。
其他玩家包括Proxool和 BoneCP (最近的新竞争对手)。后者看起来很有趣,但我没有任何实际经验。
无论如何,您通常应该在投入生产之前运行稳健性测试。
另见
关于xml - 最好的 JDBC 数据源 bean 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2986038/