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

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

Спасибо,


person Rakesh    schedule 15.02.2010    source источник


Ответы (2)


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

person Eric Petroelje    schedule 15.02.2010

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

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

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

person djna    schedule 15.02.2010