Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно закрывать Hikari connection / 3 сообщений из 3, страница 1 из 1
24.06.2019, 14:13
    #39829865
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно закрывать Hikari connection
Всем привет!

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


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
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);
        }
    }
}
...
Рейтинг: 0 / 0
24.06.2019, 14:39
    #39829882
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно закрывать Hikari connection
MolasarЧитал, что принудительно закрывать соединения Hikari не нужно
клиентский код об этом ничего не должен знать - он не должен зависеть от реализации. т.е. кода вида "если это соединение из хикари, то не закрываем" там быть не должно. авторы любого пула об этом естественно подумали, по-этому каждый раз, когда ты просишь коннект, тебе возвращают некий прокси, который реагирует на close() особым образом. естественно физически соединение при этом не закрывается, но клиентский код это беспокоить не должно. По-этому да, нужно закрывать и да оно закроется в try-with-resources, но не физически, а просто вернется в пул
...
Рейтинг: 0 / 0
24.06.2019, 14:45
    #39829884
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно закрывать Hikari connection
chpashaMolasarЧитал, что принудительно закрывать соединения Hikari не нужно
клиентский код об этом ничего не должен знать - он не должен зависеть от реализации. т.е. кода вида "если это соединение из хикари, то не закрываем" там быть не должно. авторы любого пула об этом естественно подумали, по-этому каждый раз, когда ты просишь коннект, тебе возвращают некий прокси, который реагирует на close() особым образом. естественно физически соединение при этом не закрывается, но клиентский код это беспокоить не должно. По-этому да, нужно закрывать и да оно закроется в try-with-resources, но не физически, а просто вернется в пул
Понял.
Спасибо за подробное объяснение.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно закрывать Hikari connection / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]