BoneCP: Является ли метод getConnection потокобезопасным или мы должны с этим справиться?

При использовании пула соединений BoneCP я столкнулся со следующими путаницами и хотел бы услышать несколько советов по этому поводу:

  • Является ли getConnection метод BoneCP потокобезопасный? Как лучше всего использовать это, когда есть много потоков, запрашивающих соединение параллельно?
  • Обязательно ли вызывать connection.close() каждый раз после использования соединения?
  • если требуется вызвать connection.close(), он действительно отключит соединение с БД или просто отправит соединение в пул?

Заранее спасибо за поддержку.


person Sudarsan    schedule 01.11.2011    source источник


Ответы (1)


getConnection() BoneCP потокобезопасен; так что самому ничего делать не надо. И да, вам нужно вызвать connection.close(), если вы закончили с соединением (это не относится к BoneCP, но применимо к любому соединению JDBC).

Как и в случае со всеми пулами соединений, вызов connection.close() вернет соединение в пул соединений или, в некоторых случаях, также закроет физическое соединение (но на самом деле: это деталь реализации, о которой вам не следует беспокоиться).

Обычно пулы соединений поддерживают пул физических соединений с базой данных. Когда вы вызываете getConnection(), пул соединений ищет доступное физическое соединение и заключает его в логическое соединение. Эта логическая связь возвращается. При close() логическом соединении пул соединений знает, что физическое соединение снова доступно для повторного использования.

person Mark Rotteveel    schedule 01.11.2011