HikariPool против HikariDataSource

Я собираюсь использовать 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...
        }

Оба класса работают отлично. Итак, вопрос следующий: какой из них рекомендуется использовать чаще всего и почему?

Заранее спасибо,

Саймон


person user1856533    schedule 26.02.2016    source источник


Ответы (1)


правильный способ (API) - всегда получать соединение из источника данных так как:

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

быть защищенным кодированием для API, а не реализацией.
HikariPool не является источником данных. он используется HikariDataSource.

person Nitin    schedule 26.02.2016
comment
Но учтите, что HikariPool содержит пару полезных методов (например, getActiveConnections() и getTotalConnections()), которые иногда нужны. А эти? Как я могу получить к ним доступ из HikariDataSource? - person user1856533; 26.02.2016
comment
получить доступ к этим методам, зарегистрировав HikariPoolMXBean в JMX github.com/ Бреттвулдридж/HikariCP/wiki/ - person Nitin; 26.02.2016