Respuestas:
La agrupación de conexiones de bases de datos es un método utilizado para mantener abiertas las conexiones de bases de datos para que otros puedan reutilizarlas.
Por lo general, abrir una conexión de base de datos es una operación costosa, especialmente si la base de datos es remota. Debe abrir sesiones de red, autenticar, verificar la autorización, etc. La agrupación mantiene las conexiones activas para que, cuando se solicite una conexión más tarde, se use una de las activas en lugar de tener que crear otra.
Consulte el siguiente diagrama para los próximos párrafos:
+---------+
| |
| Clients |
+---------+ |
| |-+ (1) +------+ (3) +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
| | | +------+ +----------+
+---------+ | ^
| | (2)
| /------\
| | Pool |
| \------/
(4) | ^
| | (5)
| +-------+ (6) +-----------+
#===> | Close | ======> | RealClose |
+-------+ +-----------+
En su forma más simple, es solo una llamada API similar (1) a una llamada API de conexión abierta que es similar a la "real". Esto primero verifica que el grupo tenga una conexión adecuada (2) y, si hay una disponible, se la da al cliente. De lo contrario, se crea uno nuevo (3).
Una "conexión adecuada" es aquella que ya tiene acceso a la base de datos utilizando la información correcta (como la instancia de la base de datos, las credenciales y posiblemente otras cosas).
Del mismo modo, hay una llamada API cercana (4) que en realidad no llama a la conexión cercana real , sino que pone la conexión en el grupo (5) para su uso posterior. En algún momento, las conexiones en el grupo pueden estar realmente cerradas (6).
Esa es una explicación bastante simplista. Las implementaciones reales pueden manejar conexiones a múltiples servidores y múltiples cuentas de usuario, pueden preasignar alguna línea base de conexiones para que algunas estén listas de inmediato, y en realidad pueden cerrar conexiones viejas cuando el patrón de uso se calma.
Las imágenes hablan más que mil palabras (paxdiablo dio una descripción increíble):
Puede usar la biblioteca de apache commons para la implementación de agrupación de conexiones de forma transparente: http://commons.apache.org/dbcp/
DBCP también es un grupo de Hibernate compatible: http://www.informit.com/articles/article.aspx?p=353736&seqNum=4
Concepto de agrupación de conexiones no solo en Java sino en muchos lenguajes de programación. Crear un nuevo objeto de conexión es costoso, por lo que se realiza y mantiene un número fijo de conexiones en el ciclo de vida creando un grupo virtual Java Just ( http://javajust.com/javaques.html ), consulte la pregunta 14 en esta página