Ответ
В Spring по умолчанию используется уровень Isolation.DEFAULT.
Что это означает: Spring делегирует выбор уровня изоляции базе данных. Для большинства СУБД (PostgreSQL, Oracle, SQL Server) уровень по умолчанию — READ_COMMITTED.
Пример явного указания уровня в аннотации @Transactional:
@Service
public class UserService {
@Transactional(isolation = Isolation.READ_COMMITTED) // Явное указание
public void updateUser(Long userId, String name) {
// ... логика
}
}
Доступные уровни изоляции в Spring (org.springframework.transaction.annotation.Isolation):
DEFAULT– настройки СУБД.READ_UNCOMMITTED– разрешает Dirty Read.READ_COMMITTED– предотвращает Dirty Read (стандартный выбор).REPEATABLE_READ– предотвращает Dirty и Non-repeatable Read.SERIALIZABLE– полная изоляция.
Важно: Фактическое поведение зависит от реализации СУБД (блокировки или MVCC).