2010-01-18 1 views
2

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

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

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

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

ответ

2

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

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

+1

Это должно быть сделано. –

Смежные вопросы