Использование автоматической фиксации не означает, что транзакции больше не используются для доступа к данным. Это просто означает, что каждый оператор теперь выполняется в своей собственной транзакции. Точные случаи, когда транзакция начинается и заканчивается, определены в спецификации JDBC. Для краткости это обычно зависит от характера выполняемого оператора.
Я не уверен, как реализован ваш дизайн, но нетранзакционные системы обычно страдают от трех проблем. Использование автоматической фиксации может привести к повторному появлению одной или нескольких из этих проблем.
Грязные чтения
Рассмотрим поток A в вашем приложении, который считывает сущность и обновляет ее, но не фиксирует новое значение. Рассмотрим другой поток B, который читает ту же сущность и видит обновленное значение. Если поток A должен был откатить свои изменения или потерпеть неудачу при фиксации обновленного значения, то B, по сути, использует грязное значение, поскольку он выполнял грязное чтение.
Сама автоматическая фиксация не приводит к грязному чтению. Однако, если у вас есть последовательность операций чтения-записи базы данных, которые первоначально выполнялись в одной транзакции, выполнение фиксации последовательности после каждой операции чтения / записи приведет к неправильному чтению в другой транзакции, поскольку текущая транзакция может просто откатиться изменение.
Неповторяемые чтения
В контексте транзакции чтение одной и той же сущности (записи) дважды в контексте транзакции и просмотр другого значения во втором чтении считается неповторяемым чтением. Это происходит, когда другая транзакция зафиксировала свое изменение, а текущая транзакция считывает новое значение.
Использование автоматической фиксации (или, скорее, выполнения операций чтения в двух разных транзакциях), скорее всего, приведет к неповторяемым чтениям, поскольку обе операции чтения в одном и том же потоке будут выполняться в разных транзакционных контекстах, что приведет к второй читать, увидев зафиксированное значение (из транзакции в другом потоке).
Фантомные чтения
Очень похоже на неповторяемые чтения, но не совсем. В этом случае поток выполнения, выполняющий второе чтение, увидит дополнительные данные (а не обновленные данные) в виде новых записей.
Аналогично, использование автоматической фиксации, скорее всего, приведет к фантомному чтению в вашем приложении по тем же причинам.
Эти проблемы также будут зависеть от используемых уровней изоляции транзакций базы данных, но в конечном итоге, когда кто-либо использует инфраструктуру ORM, маркировка начала и конца транзакций будет оставлена разработчику приложения. Хотя отдельные операции чтения-записи могут быть изолированы друг от друга базой данных, разработчик должен убедиться, что работа происходит в транзакционном контексте. Использование автоматической фиксации изменяет контекст транзакции для каждой операции.
TLDR
Использование автоматической фиксации при выполнении транзакций означает, что невозможно выполнить откат до безопасного состояния в случае сбоя во время «контекста бизнес-транзакции». Кроме того, именно по этой причине автоматическая фиксация должна быть отключена при выполнении пакетных обновлений в JDBC. Использование автоматической фиксации приведет к тому, что фиксация будет происходить для каждого обновления в пакете, когда реальная необходимость - это фиксация в конце пакета.
Я бы рекомендовал прочесть книгу Стратегии проектирования транзакций Java (доступна в виде бесплатной электронной книги), чтобы получить более полное представление об использовании транзакций.