В Hibernate можно настроить расширенный пул соединений, который называется c3p0. Просто укажите параметр конфигурации в файле persistence.xml:
<property name="hibernate.c3p0.testConnectionOnCheckout" value="true"/>
Hibernate попытается получить доступ к необходимым классам. С Maven вы настраиваете:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>4.1.8.Final</version>
</dependency>
Примечание: я не буду игнорировать то, что некоторые говорят, что тестирование соединений перед использованием стоит дорого. Я думаю, что последовательность приложения имеет преимущество. А при выполнении реальных операторов SQL относительная стоимость относительна, даже в простых случаях она составляет менее 10%.