Правильное использование BoneCP

Я только что начал использовать BoneCP и вытащил образец кода JDBC с сайта авторов.

У меня есть функция, называемая getConnection(), которая возвращает соединение, это фрагмент:

    // setup the connection pool
BoneCPConfig config = new BoneCPConfig();
// Config goes here.
connectionPool = new BoneCP(config); // setup the connection pool

return connectionPool.getConnection(); // fetch a connection

Теперь, мои вопросы: 1) Позволяет ли я вызвать connection.close(), когда я закончил использовать соединение, которое возвращается из вышеприведенной функции, поэтому оно возвращается в пул или завершает ли это соединение полностью? Как вернуть соединение с пулом?

2) Как очистить пул от приложения quit? Я вызываю connectionPool.shutdown(), когда я заканчиваю? А также, я где-то читал, что мне нужно закрыть все объединенные соединения по отдельности? Это правда?

Спасибо.

Ответ 1

1. Всегда вызывайте connection.close(), чтобы вернуть соединение с пулом (оно не будет физически закрыто), когда вы закончите с ним.

2. Вызовите connectionPool.shutDown(), когда вы полностью закончите с пулом, а не планируете снова подключиться.

Ответ 2

 Connection connection = dbPool.getConnection();

Объект Connection, полученный из пула, является классом-оболочкой. Он будет поддерживать базовое соединение правильно даже в Исключение.

Даже в исключениях, связанных с подключением, например, TERMINATE_ALL_CONNECTIONS, пул BoneCP правильно закроет все базовые соединения.

Таким образом, пул BoneCP делает кеш прозрачным. Клиентская сторона должна только следить за потоком стенда,

  • запросить соединение ( взять соединение из пула, пул будет решать, следует ли повторно использовать/создать его)
  • запросить PreparedStatement/CallableStatement (повторно использовать объект из пула, если он включен)
  • выполнить инструкции
  • закрыть, (освободить объект оператора к пулу, если он включен)
  • закрыть соединение, (отпустить объект подключения в пул)

Когда приложение останавливается, выключите пул, чтобы освободить все кешированные соединения.

boneCP.shutdown()