2013-04-16 4 views
4

Я искал пул соединений и читал об этом. Если я правильно ее понимаю, пул соединений подобен сборке открытых подключений. Если соединение установлено или создано, оно должно быть добавлено в пул соединений, и если это соединение закрыто, его следует удалить в пуле соединений; пока он открыт, я могу использовать его снова и снова.Пул соединений Java

При чтении этих учебников и объяснения о пулах соединений у меня есть несколько вопросов:

  1. Может ли пул соединений использоваться только на определенном компьютере? Как ComputerA не может поделиться своим пулом подключений с ComputerB?

  2. Где разместить connection.close()?

Правильно ли использовать соединение ТОЛЬКО при выборе/загрузке записи? После того, как я получил возвращенные записи/данные, я закрою соединение в сообщении finally. То же, что добавлять, редактировать и удалять записи. И пока он обрабатывается, я помещаю индикатор выполнения, поэтому пользователю придется дождаться его завершения и повторить процесс, что означает, что я буду открывать только соединение по одному.

Спасибо за объяснение. :)

ответ

7

Примечание: Я предполагаю, что мы говорим о интерфейсе java.sql.Connection.

Может ли пул соединений использоваться только на определенном компьютере? Как ComputerA не может поделиться своим пулом подключений с ComputerB?

Соединение между работающим приложением и базой данных. Естественно, что две разные машины не могут совместно использовать одно и то же запущенное приложение, поэтому они не могут обмениваться соединениями с базой данных.

Куда поместить connection.close()?

Вы всегда должны убедиться, чтобы позвонить close() на Connection например, после его использования (как правило, в finally блоке). Если используется объединение, это фактически вернет соединение с пулом за кулисами. Ссылка: Closing JDBC Connections in Pool

Правильно использовать соединение ТОЛЬКО при выборе/загрузке записи? После того, как я получил возвращенные записи/данные, я закрою соединение в сообщении finally.

Да, это правильно. Вы не хотите вручную вставлять ссылку на ссылку Connection - использовать ее для выполнения SQL/DML, а затем проверить ее обратно в пул, позвонив close() в блок finally, как и вы.

+2

Все верно, и если вы используете Java 7, вы можете использовать новый интерфейс [AutoCloseable] (http://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html) вместо того, чтобы положить close() в блок finally. Проверьте [этот пример из документов Oracle] (http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html) – Eyal

Смежные вопросы