При доступе к базе данных через JDBC/ODBC следует ли создавать и закрывать соединение для каждого запроса?

Если у вас есть класс, который обслуживает запросы от других классов для данных базы данных, когда вы должны удерживать соединение с базой данных и когда вы должны закрыть его и снова открыть при следующем запросе?

Что, если это служба, которая отвечает на подключения из внешних приложений? (Веб-сервис, Ajax, RPC)

Является ли хорошей идеей поддерживать одноэлементное соединение с базой данных, которое всегда открыто, и просто повторно открывать его в случае сбоя? Или вы должны открывать новое соединение с базой данных для каждого запроса?

Если поддержка одноэлементного объекта базы данных, который всегда имеет открытое соединение с базой данных, является плохой идеей, то есть ли какие-либо обстоятельства, при которых это хорошая идея? Я часто видел, как на это ссылались как на оправдание шаблона Singleton?

Я не говорю о новом соединении для каждого запроса к базе данных, это было бы глупо.


person Omar Kooheji    schedule 28.05.2009    source источник


Ответы (1)


Возможно, вы захотите взглянуть на пул соединений.

В этом сценарии N соединений открываются и становятся доступными для клиентов. Когда вы «закрываете» соединение, само соединение не закрывается, а возвращается в пул для использования другим клиентом.

Apache DBCP — полезная библиотека для управления этим.

person Brian Agnew    schedule 28.05.2009