Я хочу автоматически переподключиться и повторно отправить последний SQL-запрос, если соединение закрыто (например, на сервере БД, а не потому, что я его закрою).
Я знаю, что мог бы сделать connection.isValid()
(что просто SELECT 1
в большинстве реализаций драйверов) перед отправкой каждого запроса, но это расточительно. Я добавлю задержку в оба конца к каждому из моих запросов.
То, что я хотел, было что-то вроде:
- Отправляет запрос в базу данных
- Если соединение не работает, переподключите и отправьте тот же запрос
- Если не удается восстановить соединение, переведите соединение в закрытое состояние
Exception
.
Есть ли какие-либо рекомендации по этому поводу? Я не могу себе представить, что я первый, кто хочет что-то подобное.
Я подумываю о том, чтобы сделать обертку вокруг java.sql.Connection
моего драйвера и запустить этот алгоритм за кулисами, но если что-то еще есть, я был бы признателен, если бы мне не пришлось изобретать все заново (я пытался найти его в Google, но не мог ничего не нашел).
PS: мне не нужен пул соединений, потому что я буду использовать его в экземпляре AWS Lambda, и все известные мне пулы соединений будут просто запускать isValid
перед каждым запросом.