Что такое пул соединений и почему он по умолчанию не подходит для производства? Может ли кто-то уточнить это?
Пул соединений - это способ открытия/подготовки/закрытия соединений. Механизм объединения соединений представляет собой часть программного обеспечения (компонента), которому вы делегируете функцию управления соединениями. Ваше приложение будет просто запрашивать подключение, использовать его и доставлять обратно в пул. Компонент отвечает за открытие N соединений и оставляет их готовыми, когда ваше приложение спрашивает. Если соединение устарело, механизм объединения затем закроет его и снова откроет новый. Это означает лучшее использование соединений, так как вам не нужно ждать установления соединения во время фактического выполнения вашего кода, и вам не нужно беспокоиться о устаревших подключениях.
Hibernate на самом деле не несет никакой реальной связи. Он обеспечивает внутренний менеджер соединений, который является очень рудиментарным. Причина проста: почти (если не все) серверы приложений (например, JBoss AS) и контейнеры сервлетов (например, Tomcat) по умолчанию используют механизм объединения пулов. Таким образом, вашему приложению не нужно беспокоиться о деталях об этом. Он просто запрашивает AS для подключения.
На мой взгляд, есть только два случая, когда вам нужно беспокоиться о пулах соединений:
- Вы имеете дело с автономным приложением (который не запускается внутри контейнера)
- Вы находитесь действительно эксперт в объединении пула и ни один из существующих потребностей ваших потребностей.
Но по моему опыту, большинство людей, которые используют «внешний» пул соединений сделать это из-за отсутствие знаний о Пулах соединений и отсутствия знаний об их емкости.
@ jpkrohling, Отличное объяснение :-) –