Как устроена система внедрения зависимостей по SOLID? Как организовать управление транзакцией базы данных через dependency injection и генераторы?

Dependency Injection передаёт объекту зависимости извне и помогает соблюдать Dependency Inversion, но не является всей системой SOLID. Транзакцию удобно оформлять как ограниченный по времени ресурс.

Короткий ответ

Что ответить на собеседовании

Dependency Injection передаёт объекту зависимости извне и помогает соблюдать Dependency Inversion, но не является всей системой SOLID. Транзакцию удобно оформлять как ограниченный по времени ресурс.

Подробный разбор

Ответ с пояснениями

Dependency Injection передаёт объекту зависимости извне и помогает соблюдать Dependency Inversion, но не является всей системой SOLID. Транзакцию удобно оформлять как ограниченный по времени ресурс.

В генераторной зависимости создают сессию до yield и закрывают её в finally; при ошибке выполняют rollback. Момент commit должен быть явно определён и наступить до подтверждения успешного бизнес-ответа, а не случайно после отправки HTTP. Детали lifecycle зависят от framework. Бизнес-код зависит от интерфейса repository/unit of work, а не сам создаёт глобальное соединение.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее