Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Как правильно закрывать Hikari connection  [new]
Molasar
Member

Откуда:
Сообщений: 773
Всем привет!

Для записи в БД через JDBC использую несколько потоков, в каждом из которых использую соединение из пула Hikari.
Читал, что принудительно закрывать соединения Hikari не нужно. В ниже приведенном примере используется конструкция try-with-resources. Происходит в этом случае закрытие соединения?
for (int i = 0; i < nThreads; i++) {
    executorFlushObjectToDB.execute(new FlushObjectToDB(...));
}

public class FlushObjectToDB implements Runnable {
    ...
    @Override
    public void run() {
        try (Connection connection
                = HikariConectionFactory.getConnection();
                PreparedStatement prStatement
                = connection.prepareStatement(sqlInsertObjectProp)) {
             connection.setAutoCommit(false);

             for (...) {
                 prStatement.setString(1, ".....");
                 prStatement.setString(2, ".....");
                 prStatement.addBatch();
             }
              
             prStatement.executeBatch();
             connection.commit();

        } catch (SQLException ex) {
             throw new RuntimeException(ex);
        }
    }
}
24 июн 19, 14:13    [21914096]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно закрывать Hikari connection  [new]
chpasha
Member

Откуда:
Сообщений: 8593
Molasar
Читал, что принудительно закрывать соединения Hikari не нужно

клиентский код об этом ничего не должен знать - он не должен зависеть от реализации. т.е. кода вида "если это соединение из хикари, то не закрываем" там быть не должно. авторы любого пула об этом естественно подумали, по-этому каждый раз, когда ты просишь коннект, тебе возвращают некий прокси, который реагирует на close() особым образом. естественно физически соединение при этом не закрывается, но клиентский код это беспокоить не должно. По-этому да, нужно закрывать и да оно закроется в try-with-resources, но не физически, а просто вернется в пул
24 июн 19, 14:39    [21914121]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно закрывать Hikari connection  [new]
Molasar
Member

Откуда:
Сообщений: 773
chpasha
Molasar
Читал, что принудительно закрывать соединения Hikari не нужно

клиентский код об этом ничего не должен знать - он не должен зависеть от реализации. т.е. кода вида "если это соединение из хикари, то не закрываем" там быть не должно. авторы любого пула об этом естественно подумали, по-этому каждый раз, когда ты просишь коннект, тебе возвращают некий прокси, который реагирует на close() особым образом. естественно физически соединение при этом не закрывается, но клиентский код это беспокоить не должно. По-этому да, нужно закрывать и да оно закроется в try-with-resources, но не физически, а просто вернется в пул

Понял.
Спасибо за подробное объяснение.
24 июн 19, 14:45    [21914124]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить