2013-08-16 1 views
0

Включен ли драйвер на close(), даже если для параметра conn.setAutoCommit() установлено значение false?Драйвер OracleJDBC: По умолчанию ли драйвер совершает по закрытию(), даже если conn.setAutoCommit False?

Я проверил его для запроса на вставку, и да, да. Дайте мне знать, если я ошибаюсь.

ответ

2

Когда Connection закрыт, ему необходимо выполнить откат или совершить текущую транзакцию. IIRC, спецификация JDBC позволяет реализации выбирать либо до тех пор, пока она является последовательной в своем поведении (всегда фиксировать или всегда откатывать при закрытии). Так что да, поведение разрешено и поэтому оно правильно.

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

1

при работе с autocommit=false, просто сделайте явно rollback перед закрытием подключение. Таким образом, все обновления будут отменены, если явно не будет выполнено.

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