С JDBC 4 вы можете использовать isValid(int)
( JavaDoc ) из интерфейса подключения. Это в основном делает пробное заявление для вас.
Некоторые драйверы реализуют это, отправляя правильный фиктивный SQL в базу данных, а некоторые напрямую используют операции низкого уровня, что снижает накладные расходы на синтаксический анализ.
Однако остерегаясь тайм-аута, некоторые драйверы (DB / 400 и Oracle Thin) создают новый поток времени для каждого вызова, что не совсем приемлемо для большинства сценариев проверки пула). И, похоже, Oracle также не использует подготовленный оператор, поэтому он как бы полагается на неявный кеш.