我发现有些人使用org.apache.commons.dbcp.BasicDataSource
而其他配置有com.mchange.v2.c3p0.ComboPooledDataSource
。
Spring有自己的:org.springframework.jdbc.datasource.DriverManagerDataSource
可能还有更多。但哪一个最好?我有一个需要连接池的JPA / Hibernate三层应用程序,但看起来所有人都支持这个....
答案 0 :(得分:12)
Spring有自己的:org.springframework.jdbc.datasource.DriverManagerDataSource
类org.springframework.jdbc.datasource.DriverManagerDataSource
实现DataSource
接口,但是不一个连接池,它只是一个方便的类,可以在开发过程中使用而不是真正的池(但它会在每次通话时创建一个新连接)。我建议阅读javadoc。
我有一个需要连接池的JPA / Hibernate三层应用程序,但看起来所有人都支持这个....
如果您使用的是应用程序服务器,请使用应用程序服务器的连接池。
如果不是,那么DBCP,C3P0是最常见的解决方案。 我会使用C3P0(现在实际上是捆绑了Hibernate而不是DBCP),我遇到了DBPC在高负载下的一些死锁问题,而不是C3P0所以我倾向于选择C3P0。
值得注意的是,DBCP在很长一段时间不活动后(最近C3P0处于非活动状态)已经复活,因此可能会更好。
其他玩家包括Proxool和BoneCP(最近的新竞争对手)。后来看起来很有趣,但我没有任何实际经验。
在任何情况下,您通常应该在投入生产之前运行稳健性测试。