我将在我的WEB应用程序中使用HikariCP而不是c3p0。看起来,太棒了。但对我来说,HikariCP界面中仍然存在一个值得怀疑的地方。它包含两个类—HikariPool和HikariDataSource,它们包含几乎相似的功能。通过查看源代码,我发现HikariDataSource就像HikariPool的包装器。例如,请在下面找到代码中有趣的部分:
HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/mydb?user=aaa&password=xxx&autoReconnectForPools=true&autoReconnect=true&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8"); config.setMaximumPoolSize(20); config.setMinimumIdle(2); HikariPool pool = new HikariPool(config);//using HikariPool class // HikariDataSource pool = new HikariDataSource(config);// using HikariDataSource class try (Connection conn = pool.getConnection();) { // execute some query... }
这两个类工作完美。那么,问题是这样的:最推荐使用哪一款,为什么?
提前谢谢你,
西蒙
正确的方法(API)是始终从数据源获取连接:
HikariDataSource hds = new HikariDataSource(config);
hds.getConnection()
通过编码到API而不是实现来保护。
Hikaripool不是数据源。它由HikariDataSource使用。