Reputation: 449
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
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