首页/开发/系统分析与架构设计速查/工作单元(Unit of Work)
架构风格与模式58 条

工作单元(Unit of Work)

跟踪一次业务操作期间的对象变更,在提交时统一计算变更集并写入数据库,保证事务边界清晰且减少重复写操作;常与仓储、标识映射配合使用。

职责记录新增/修改/删除,事务提交时统一持久化
配合模式仓储(存取)、标识映射(同一对象同一实例)
收益事务边界明确,减少数据库往返

提交时机示意(伪代码)

提交时机示意(伪代码)
uow = new UnitOfWork()
order = repo.find(1)
order.addLine(item)      // 跟踪修改
repo.save(order)
uow.commit()             // 统一计算变更集并写库
// 业务失败:uow.rollback(),不产生部分写入
工作单元跨越过长的业务流程会长时间占用事务与连接,应保持短事务。

易错点

  • 工作单元与业务事务生命周期不一致,出现长事务锁等待
  • 绕过工作单元直接写库,变更跟踪与审计丢失

数据来源与参考

  • Martin Fowler《Patterns of Enterprise Application Architecture》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌