La "solución" es buscar un pool de conexiones que se comporte bien en ese tipo de circunstancias y configurarlo para que el Hibernate lo use
.
Una alternativa sería tener un proceso que probando las conexiones de BDD periodicamente y cuando detectara que no se puede conectar, reiniciara todo al volver a detectar la BDD en funcionamiento. Pero programar eso no es sencillo.
El problema es que si el pool no se reconectar, reiniciar Hibernate puede no servirte de mucho ya que lo más que conseguirás es que el pool le conteste que no hay conexiones disponibles.
Nosotros ahora mismo las aplicaciones con Hibernate nos dan problemas si el servidor de BDD falla temporalmente, pero como no son críticas no es un tema prioritario. Tengo en la cola de tareas pendientes modificar el pool nuestro para poder usarlo como DataSource, pero esta muy muy abajo en la lista de prioridades
.
S!