Управление транзакциями либо на уровне сервиса, либо на уровне хранилища?

StackOverflow https://stackoverflow.com/questions/2265767

Вопрос

У меня есть определенный сценарий, в котором вставки и обновления выполняются в нескольких таблицах на основе некоторых ограничений .. поэтому естественно использовать область транзакций для этих сценариев.Теперь у меня есть уровень ответственности и уровень обслуживания.сервисный уровень опосредует репозиторий и пользовательский интерфейс и постоянно находится в неведении.Теперь я запутался, где использовать транзакции либо в сервисе, либо в слоях репозитория.Я не использую никаких ORM.Я также видел людей, выступающих за шаблон Unit of work для таких сценариев.есть ли какие-либо примеры шаблона unit of work, который соответствует моим текущим сценариям, все примеры, которые я видел, используют ORM.

Спасибо,

Это было полезно?

Решение

Конечно, это будет зависеть от вашей системы, но обычно я бы делал это на уровне сервиса.Особенно, если ваши методы уровня сервиса вызывают несколько детализированных методов репозитория и ожидают, что они либо полностью зафиксируют, либо полностью откатят.

Другие советы

Некоторые вопросы, которые могут помочь ответить на этот вопрос.

Какой уровень понимает транзакционные требования?Какова степень детализации интерфейса вашего репозитория?

В моем мире мы, как правило, выполняем мелкозернистые операции сохранения: Вставляем, Обновляем, Удаляем.а затем скомпоновать их на сервисном уровне.Следовательно, в этой среде мне кажется очевидным, что именно уровень сервиса понимает область действия транзакции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top