Соединение с пулом потоков и шаблон проектирования Singleton для получения единого соединения с базой данных - PullRequest
0 голосов
/ 04 октября 2018

Я действительно запутался между этими 2 сейчас, как показано ниже: 1. является ли возвращение только экземпляра Singleton к соединению БД в течение всего времени выполнения приложения JAVA 2. является концепцией соединений пула потоков в целом... Я имею в виду, если мы планируем иметь только одноэлементный экземпляр для соединения с БД, почему даже есть концепция пулов, хотя я получаю то, для чего именно используется пул

Эти 2 не оченьпротивоположные понятия, или я что-то здесь путаю ...?

1 Ответ

0 голосов
/ 04 октября 2018

- это возврат только экземпляра Singleton к соединению базы данных в течение всего времени выполнения приложения JAVA?

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

- это концепция соединений пула потоков в целом.

Установление соединения с базой данных оченьресурсоемкий процесс и включает в себя много накладных расходов.Более того, в многопоточной среде открытие и закрытие соединения может значительно ухудшить ситуацию.

Создание JNDI на сервере и использование его в веб-приложении.

Context context=new InitialContext();
DataSource dataSource=(DataSource)
   context.lookup("jdbc/test_jndi");

, поэтому, когда DataSource использует connection pooling, поиск возвращает соединение из пула доступных объектов соединений.Если доступного соединения нет, поиск создает новое соединение.

Connection connection=dataSource.getConnection
   ("testuser","testpwd");
// ...
connection.close();

Когда приложение завершает обработку базы данных, оно явно закрывает соединение.Это снова делает соединение доступным для повторного использования.Событие закрытия соединения в пуле сигнализирует модулю объединения о необходимости восстановления обратно в пул соединений.

Любой общий ресурс требует накладных расходов на обработку одновременного доступа, поэтому вы хотите уменьшить его, не всегда имея singletons.Более того, для сокращения ресурсоемкого процесса connection pooling является предпочтительным.

...