Jdbc проверка работоспособности - выпуск точек сохранения

У меня есть общий код JDBC, который работает со всеми видами баз данных. У меня есть некоторые API, которые работают с транзакциями и точками сохранения.

Проблема заключается в том, что некоторые базы данных требуют освобождения точки сохранения вручную

 conn.releaseSavepoint(savepoint1) 

а некоторые просто выбрасывают исключение, когда вы делаете релиз вручную (особенно Oracle).

Как я могу проверить во время выполнения, есть ли у БД автоматическое освобождение точки сохранения или мне нужно сделать это вручную. И пожалуйста, у меня есть хороший apis. Я не хочу ловить исключение, в этом случае он уродлив и подвержен ошибкам. Исключением является java.sql.SqlException, а не что-то вроде "FeatureUnsupportedException". Так что, если есть настоящая ошибка, и я по глупости ее улавливаю, я могу вообще потерпеть неудачу во всей транзакции.

Спасибо

1 ответ

В документации Oracle 10g я мог заметить тот факт, что этот конкретный метод JDBC / ojdbc не поддерживается:

Примечание: Начиная с Oracle Database 10g, releaseSavepoint и oracleReleaseSavepoint не поддерживаются. Если вы вызываете любой из методов, то SQLException выдается с сообщением "Неподдерживаемая функция".

В 11g документация утверждает, что иначе:

Вы удаляете точку сохранения, используя метод Connection.releaseSavepoint(Savepoint svpt).

Но я могу легко воспроизвести вашу проблему также в 11g.

Если вы можете передать параметр поставщика БД в свой класс, вы можете просто сопоставить это поведение для каждого поставщика.

Другие вопросы по тегам