据我了解,UnitOfWork 类旨在表示域中业务事务的概念。它不应该直接代表数据库事务,这只是一种可能实现的细节。
问:那么为什么这么多关于工作单元模式的文档都提到“提交”和“回滚”方法?
这些概念对领域或领域专家毫无意义。业务事务可以“完成”,因此 UnitOfWork 应该提供“完成”方法。同样,不应该将其建模为“清除”而不是“回滚”方法吗?
更新:
答:以下两个答案都是正确的。它们是 UoW 的两个变体:对象注册和调用者注册。在对象注册中,回滚用于撤消对所有内存对象的更改。在调用者注册中,回滚用于清除所有记录的更改,以便后续调用 Commit 将不会执行任何操作。