互联网上充满了有关UnitOfWork
图案;即使如此也不例外。
我还是不明白。以我的理解UnitOfWork = Transaction in DB
。就这样;仅此而已。
它是否正确?
我的困惑是由于它是如何在不同的环境中实现的ORM
s. NHibernate
uses ISession
不仅仅是一个Transaction
. Dapper
把一切都留给你。
我的问题只是关于设计模式,而不考虑任何ORM
或技术。
如果它不仅仅是Transaction
,请解释一下如何。
Edit 1
参考this@David Osborne 回答中建议的链接。
工作单元跟踪您在业务期间所做的一切
可能影响数据库的事务。当你完成后,它会计算出来
结果是更改数据库所需执行的所有操作
你的工作。
所以这意味着UnitOfWork
is DBTransaction
and More.
以下是其额外职责:-
-
维护您在本次工作中更改、插入、删除的内容的状态。
-
根据此状态,工作完成后修改数据库。
虽然上面的引用中没有明确提到,但它也可以控制查询的批处理。
我现在的理解正确吗?
A UnitOfWork
是一项商业交易。不一定是技术交易(数据库交易),但通常与技术交易相关。
In the 企业应用模式它被定义为
维护受业务事务影响的对象列表,并协调更改的写出和并发问题的解决。
它没有定义如何写入更改,也没有定义存储类型。
应用程序可能会将更改写入
- 使用 SQL 的数据库
- 使用流的文件系统
- 使用http请求的持久化服务
- 使用方法调用的分布式缓存甚至内存存储
A UnitOfWork
(业务事务)收集业务对象的更改并确保其他业务事务只会看到有效的业务对象。
例如。当您的应用程序执行用例时,它会修改业务对象。如果两个业务事务(通常是用例)并行执行,您的应用程序必须注意每个业务事务执行的更改以及其他业务事务看到它们的时间。
从技术上讲,这通常是使用数据库事务来完成的。因此,一个工作单元通常是一个数据库事务。
使用 ORM 框架来处理持久性的应用程序通常在工作单元和数据库事务之间具有一对一的关系。因此,工作单元和数据库事务之间的区别通常与开发人员无关。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)