Управление транзакциями либо на уровне сервиса, либо на уровне хранилища? - PullRequest
4 голосов
/ 15 февраля 2010

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

Спасибо

Ответы [ 2 ]

4 голосов
/ 15 февраля 2010

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

3 голосов
/ 15 февраля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...