BoneCP: Является ли метод getConnection многопоточным или мы должны с этим справиться? - PullRequest
2 голосов
/ 01 ноября 2011

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

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

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

1 Ответ

9 голосов
/ 01 ноября 2011

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

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

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

...