1. Каким образом Spring реализует транзакции через прокси?
Spring реализует транзакции с помощью прокси-объектов. Вместо прямого вызова метода вызывается прокси, который оборачивает выполнение логикой транзакции. Прокси открывает транзакцию перед вызовом метода и коммитит или откатывает её после. Если метод вызывается в обход прокси, транзакция не создаётся. Поэтому важно понимать, как именно происходит вызов метода.
2. Сколько транзакций будет создано при вызове транзакционного метода внутри того же класса?
Транзакция не будет создана вообще. Вызов метода внутри того же класса происходит напрямую, минуя прокси. Spring не перехватывает такой вызов. В результате
@Transactional просто игнорируется. Это частая ошибка у начинающих разработчиков.3. Что такое Spring WebFlux?
Spring WebFlux — это реактивный web-фреймворк Spring. Он построен на неблокирующем I/O и реактивных потоках. WebFlux использует малое количество потоков для обслуживания большого числа запросов. Он хорошо подходит для высоконагруженных систем и асинхронных сценариев. При этом WebFlux не заменяет Spring MVC, а дополняет его.
4. Как действовать, если ORM генерирует неоптимальные JOIN-запросы?
Первым шагом нужно посмотреть фактический SQL и план выполнения. Часто проблема связана с lazy loading или N+1 запросами. Решение может включать переписывание запроса, использование
fetch join или native SQL. Иногда лучше отказаться от ORM для конкретного запроса. Важно не лечить проблему вслепую.5. В чём заключается суть реактивного подхода?
Реактивный подход основан на неблокирующей обработке данных и работе с потоками событий. Вместо ожидания результата код реагирует на его появление. Это позволяет эффективнее использовать ресурсы при большом количестве I/O-операций. Реактивные системы лучше масштабируются под высокую нагрузку. Однако они сложнее в понимании и отладке.
#aop #transactional #proxy #spring #webflux #reactive #orm #optimization #join #programming