Для драйвера JDBC MySQL Connector / J по умолчанию используется не TRANSACTION_REPEATABLE_READ
, а TRANSACTION_READ_COMMITTED
, как указано в этой реализации DatabaseMetaData
. Таким образом, хотя сам MySQL может по умолчанию использовать повторяемое чтение, если не указана конфигурация транзакции, драйвер JDBC будет использовать фиксацию чтения в качестве значения по умолчанию при создании транзакций.
Выбор TRANSACTION_READ_COMMITTED
, вероятно, является историческим, предыдущее значение по умолчаниюЯдром MySQL был MyISAM, и этот движок фактически не поддерживает транзакции, поэтому любые изменения были технически зафиксированы немедленно, и поэтому любое чтение считывало эти новые строки. Для MyISAM поведение совпадает - в основном - TRANSACTION_READ_COMMITTED
.
Однако мы не можем с уверенностью ответить, почему разработчики MySQL Connector / J действительно выбрали это по умолчанию. Сама спецификация JDBC не требует определенного значения по умолчанию, но, по моему опыту, многие драйверы JDBC используют это как значение по умолчанию.