user1856533
user1856533

Reputation: 449

HikariPool vs HikariDataSource

I'm going to use HikariCP instead of c3p0 in my WEB application. Seems, it's super. But for me the questionable place still exist in the HikariCP interface. It contain two classes - HikariPool and HikariDataSource that contain almost the similar functionality. Looking into sources I have detected that HikariDataSource is like the wrapper for HikariPool. For instance, please find below the interesting part of code:

    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...
        }

Both classes work perfectly. So, the question is the following: which one is recommended to use mostly and why?

Thank you in advance,

Simon

Upvotes: 3

Views: 3655

Answers (1)

Nitin
Nitin

Reputation: 1660

correct way (API) is to always get connection from data source as:

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

be protected by coding to API instead of implementation.
HikariPool is not data source. it is used by HikariDataSource.

Upvotes: 4

Related Questions