我将在我的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... }
这两个课程都很完美。 所以,问题如下:建议大多使用哪一个,为什么?
提前谢谢你,
西蒙
答案 0 :(得分:4)
正确的方法(API)总是从data source获得连接:
HikariDataSource hds = new HikariDataSource(config);
hds.getConnection()
通过编码到API而不是实现来保护 HikariPool不是数据源。它被HikariDataSource使用。