в mysql jdbc влияет ли автоматическая фиксация на все соединения?

при использовании пула соединений будет ли установка autocommit = false для соединения влиять только на это соединение?

если я закрою это соединение без установки autocommit = true и получу новое соединение, будет ли для политики этого соединения установлено значение autocommit = true?


person David    schedule 27.01.2011    source источник


Ответы (2)


Ответ будет по существу: «зависит от используемого пула соединений».

Однако, если бы я был пулом соединений, я бы восстановил состояние автоматической фиксации в соответствии с начальной конфигурацией. Я думаю, что другие пулы соединений сделали бы то же самое.

person BalusC    schedule 27.01.2011

Тестовый сценарий:

  1. установить автофиксацию = ложь
  2. использовать транзакции
  3. закройте соединение, не возвращая его к autocommit=true

Результат: при повторном использовании этого соединения у него все еще есть autocommit=false (у других новых подключений autocommit=true по умолчанию). Итак, как только я уничтожаю это соединение на стороне базы данных и снова вызываю свой код, только тогда пул дает мне новое соединение с autocommit=true по умолчанию.

Вывод: это влияет только на это соединение, но убедитесь, что вы установили его обратно в autocommit=true перед закрытием! (Это основано на реальном тестировании, а не на предположении)

Примечание. Это поведение также отмечено здесь: http://www.coderanch.com/t/583969/JDBC/databases/Tomcat-connection-pool-auto-commit

Я использую JDBC с Tomcat7, Java 1.7, MySQL5.6, Connector/J 5.1.

person Boris Krassi    schedule 05.03.2015