HikariPool vs HikariDataSource

时间:2016-02-26 06:01:36

标签: hikaricp

我将在我的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...
        }

这两个课程都很完美。 所以,问题如下:建议大多使用哪一个,为什么?

提前谢谢你,

西蒙

1 个答案:

答案 0 :(得分:4)

正确的方法(API)总是从data source获得连接:

HikariDataSource hds = new HikariDataSource(config);
hds.getConnection()

通过编码到API而不是实现来保护 HikariPool不是数据源。它被HikariDataSource使用。