Вопрос проверяет понимание работы транзакций, контекста выполнения и многопоточности в Spring.
Spring привязывает транзакцию к текущему потоку выполнения.
Это упрощает управление транзакционным контекстом.
Транзакция хранится в ThreadLocal.
Все операции в одном потоке используют одно соединение с БД.
Так обеспечивается целостность транзакции.
Связь транзакции и потока — ключевая идея транзакционной модели Spring.
Транзакция в Spring — это контекст выполнения, связанный с текущим потоком и управляемый инфраструктурой фреймворка.
Spring:
открывает транзакцию при входе в метод
сохраняет контекст в ThreadLocal
привязывает Connection к потоку
В результате:
все DAO-вызовы в этом потоке используют одно соединение
commit или rollback выполняется централизованно
Глобальный контекст:
требует сложной синхронизации
плохо масштабируется
усложняет архитектуру
Привязка к потоку:
проста
надёжна
хорошо работает с пулами потоков
транзакция «видна» только внутри одного потока
вложенные вызовы корректно участвуют в одной транзакции
Привязка транзакции к потоку — осознанный архитектурный выбор Spring для простоты и надёжности.