Dependency Injection передаёт объекту зависимости извне и помогает соблюдать Dependency Inversion, но не является всей системой SOLID. Транзакцию удобно оформлять как ограниченный по времени ресурс.
Как устроена система внедрения зависимостей по SOLID? Как организовать управление транзакцией базы данных через dependency injection и генераторы?
Dependency Injection передаёт объекту зависимости извне и помогает соблюдать Dependency Inversion, но не является всей системой SOLID. Транзакцию удобно оформлять как ограниченный по времени ресурс.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Dependency Injection передаёт объекту зависимости извне и помогает соблюдать Dependency Inversion, но не является всей системой SOLID. Транзакцию удобно оформлять как ограниченный по времени ресурс.
В генераторной зависимости создают сессию до yield и закрывают её в finally; при ошибке выполняют rollback. Момент commit должен быть явно определён и наступить до подтверждения успешного бизнес-ответа, а не случайно после отправки HTTP. Детали lifecycle зависят от framework. Бизнес-код зависит от интерфейса repository/unit of work, а не сам создаёт глобальное соединение.