Правильное использование 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()