L'utilisation d'un pool de connexions peut aider à résoudre ce problème.
Voici un article sur la configuration d'un pool de connexions Peut-on n'avoir qu'une seule session d'hibernation par thread en java ?
Voici un autre article sur les différentes bibliothèques de regroupement de connexions disponibles.
regroupement de connexions par défaut d'hibernation