Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Что делают аннотации @Transactional и @Retryable?
@Transactional оборачивает метод в транзакцию: BEGIN перед выполнением, COMMIT при успехе, ROLLBACK при исключении. @Retryable (из Spring Retry) автоматически повторяет вызов метода при указанном типе исключений, с настройками количества попыток, задержек и backoff-политики.
Как работает @Transactional и что происходит, если метод без аннотации вызывает метод с аннотацией?
Аннотация @Transactional управляет транзакциями: открывает, коммитит или откатывает их. Если метод без @Transactional вызывает аннотированный метод внутри того же класса напрямую, транзакция не начнётся, так как Spring использует прокси, и внутренние вызовы её обходят.
Какие параметры есть у аннотации @Transactional и за что они отвечают?
Основные параметры:
propagation: Поведение при вложенных транзакциях (например, REQUIRED).
isolation: Уровень изоляции (например, READ_COMMITTED).
timeout: Максимальное время выполнения (секунды).
readOnly: Оптимизация для чтения (true/false).
rollbackFor: Классы исключений, откатывающих транзакцию.
Как работает аннотация @Transactional в Spring?
@Transactional автоматически управляет транзакциями в Spring. При вызове метода с этой аннотацией Spring открывает транзакцию, а после выполнения — коммитит или откатывает её при ошибке. Работает через AOP (аспектно-ориентированное программирование).
Что такое transactional outbox и зачем он нужен?
Transactional outbox — это способ гарантированной доставки сообщений между сервисами. Он сохраняет сообщение в БД в рамках бизнес-транзакции, а затем отправляет его асинхронно.
Что такое transactional consistency в контексте Outbox?
Что такое “database transaction boundary” и почему важно правильно выбирать границы транзакции?
Что такое аннотация @Transactional и как Spring реализует транзакции под капотом?
В каких случаях аннотация @Transactional не срабатывает?
Почему self-invocation не работает с @Transactional?
Рейтинг:
5
Сложность:
6
Transactional consistency гарантирует, что бизнес-операция и сообщение в outbox сохраняются в одной транзакции. Это предотвращает потерю данных при сбое.
Рейтинг:
4
Сложность:
8
Граница транзакции — это отрезок кода, в котором данные читаются и изменяются атомарно. Если транзакция слишком длинная — растут блокировки и задержки; слишком короткая — нарушается консистентность. Нужно выбирать границы так, чтобы внутри транзакции были только операции, которые действительно должны быть атомарными.
Рейтинг:
5
Сложность:
7
@Transactional — это аннотация для управления транзакциями декларативно. Spring оборачивает вызов метода в транзакцию автоматически. Под капотом используется AOP и прокси. Фактическое управление транзакцией делегируется PlatformTransactionManager. Разработчик описывает правила, а не пишет код транзакций вручную.
Рейтинг:
5
Сложность:
7
@Transactional не срабатывает, если метод вызывается напрямую внутри того же класса. Также она не работает для private методов. Проблемы возникают при неправильной конфигурации прокси. Еще одна частая причина — выбрасывание исключений, которые не приводят к rollback. Все эти случаи связаны с тем, как Spring применяет транзакции.
Рейтинг:
5
Сложность:
7
@Transactional в Spring работает через прокси. При self-invocation метод вызывается внутри того же объекта, минуя прокси. В результате транзакция не создаётся и аннотация игнорируется. Это ограничение прокси-механизма Spring. Для корректной работы нужен вызов через прокси.
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
7
Рейтинг:
1
Сложность:
5
Рейтинг:
2
Сложность:
8
Рейтинг:
5
Сложность:
7