Как утверждать, что соединение с базой данных находится в транзакции? - PullRequest
2 голосов
/ 19 января 2010

Я использую объект / реляционный картограф для общения с базой данных. В моем случае библиотека iBatis , которая также используется для управления транзакциями. Однако недавно у меня был случай, когда iBatis фактически не запускал транзакцию, хотя startTransaction() и т. Д. Назывался задокументировано . После некоторой отладки я обнаружил, что на моей стороне была ошибка конфигурации.

Можно было бы обвинить iBatis, но я бы хотел избежать подобных заблуждений в будущем. Итак, вот вопрос:

Как программно подтвердить, что текущее соединение с базой данных выполняется в транзакции?

Я использую базы данных Oracle, MySQL и H2 (для тестирования).

1 Ответ

2 голосов
/ 19 января 2010

Я не уверен на 100%, является ли это абсолютно показательным для присутствия в tx, но Connection.getAutoCommit () сообщает вам, находится ли соединение в режиме автоматической фиксации, где автоматическая фиксация " на "означает" нет транзакции ".

Вполне могут быть случаи, когда это утверждение не выполняется, но большинство основанных на JDBC средах будут использовать этот параметр для управления транзакциями.

...