存储库模式会杀死ORM吗?

瓦格纳·伦纳迪(Wagner Leonardi)

除了将关系数据转换为对象模型外,ORM还具有其他作用,例如:

  1. 延迟加载
  2. 自动变化检测
  3. 交易次数

但是,使用Repository模式将ORM的DTO转换为Domain Models时,会发生以下情况:

  1. 无法使用延迟加载的好处,因为我需要填充整个域模型,并且存储库不知道域需要什么数据。
  2. 由于域模型不是来自ORM世界,所以ORM无法检测到更改
  3. 由于缺乏ORM知识,因此一次无法进行多次交易

问题1:方案中,我是否可以在懒惰加载,事务和自动更改检测的全部好处上缺少一些差距还是这些优势是DDD以外的其他方法(例如Active Record)带来的更多收益?

问题2:为什么在DDD书籍中如此提及仅针对关系域模型和延迟加载,事务和变更检测进行全面论述

某些平台采用了代码优先的方法,这是一种改善这些问题的方法,但是,此功能并不总是在许多环境中存在,或者根本无法使用(例如在旧数据库中),因此它不是解决方案。

Just Roux

我已经思考了一段时间,如果要从ORM中删除变更跟踪,那么开发人员将会发现其中的价值要小得多。

延迟加载永远不会发生。聚合始终始终完整加载。如果您发现自己需要延迟加载机会,那就是您正在查询域模型。这是您不应该做的事情。为此使用一个简单的查询层/读取模型。

事务确实是数据库关注的问题,不会直接影响DDD。聚合确实代表了一个一致性边界,因此数据库事务自然是合适的,但那才是结束。

您仍然可以将ORM工具与DDD一起使用,但是获得的里程数可能会减少。我根本不喜欢ORM,如果在这个问题上我有任何选择,我就根本不使用它们。映射实际上并不需要那么多的工作,而且如果在自定义映射器类中完成映射,则它以某种语言速度而不是某些代理机制运行。

我见过一些实例,例如,使用ORM直接保留域对象。但是,如果我必须使用某个属性来标记任何东西,或者甚至更改我的设计,在其中我必须以某种特定方式实现某些方法virtual甚至构造某些类,那么我就不再认为自己的域是持久性的无知,就是我真的想要(PI)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Clojure中的存储库模式

来自分类Dev

Laravel4:从长远来看,不使用存储库模式会损害我的项目吗?

来自分类Dev

删除父Github存储库会影响子叉子吗?

来自分类Dev

在SQL数据库中存储图像标签会带来安全风险吗?

来自分类Dev

实体框架6,我应该使用存储库模式吗?

来自分类Dev

存储库模式是过程性的,不是OOP吗?

来自分类Dev

通过信号杀死子进程,但是位置会影响吗?

来自分类Dev

模式匹配会丢失类型界限吗?

来自分类Dev

尝试加载外部库会杀死JRE

来自分类Dev

Laravel 5的存储库模式

来自分类Dev

在恢复模式下会丢失数据吗?

来自分类Dev

如何使用存储库模式,服务模式,UnitOfWork,ORM(EF,NHibernate等)使用ASP MVC构建项目?

来自分类Dev

MVC中的存储库模式

来自分类Dev

MVC路由会查找模式或名称吗

来自分类Dev

用存储库模式查询

来自分类Dev

在SQL数据库中存储图像标签会带来安全风险吗?

来自分类Dev

实体框架6,我应该使用存储库模式吗?

来自分类Dev

pkill会杀死自己(及其父进程)吗?

来自分类Dev

杀死VNC服务器会杀死正在其上运行的进程吗?

来自分类Dev

现代ORM与存储库/ IoW模式

来自分类Dev

Ubuntu存储库会继续增长吗?

来自分类Dev

通过信号杀死子进程,但是位置会影响吗?

来自分类Dev

当我杀死“ cp”会怎样?它安全吗,会带来任何后果吗?

来自分类Dev

持久性会杀死USB记忆棒吗?

来自分类Dev

会强行杀死Android即时贴服务吗?

来自分类Dev

JSON模式验证器可以被该模式杀死吗?

来自分类Dev

保持电脑通电会杀死电池吗?

来自分类Dev

Maven 会覆盖本地 Maven 存储库中手动修补的 jar 吗?

来自分类Dev

线程执行的函数的return语句会自动杀死线程吗?

Related 相关文章

  1. 1

    Clojure中的存储库模式

  2. 2

    Laravel4:从长远来看,不使用存储库模式会损害我的项目吗?

  3. 3

    删除父Github存储库会影响子叉子吗?

  4. 4

    在SQL数据库中存储图像标签会带来安全风险吗?

  5. 5

    实体框架6,我应该使用存储库模式吗?

  6. 6

    存储库模式是过程性的,不是OOP吗?

  7. 7

    通过信号杀死子进程,但是位置会影响吗?

  8. 8

    模式匹配会丢失类型界限吗?

  9. 9

    尝试加载外部库会杀死JRE

  10. 10

    Laravel 5的存储库模式

  11. 11

    在恢复模式下会丢失数据吗?

  12. 12

    如何使用存储库模式,服务模式,UnitOfWork,ORM(EF,NHibernate等)使用ASP MVC构建项目?

  13. 13

    MVC中的存储库模式

  14. 14

    MVC路由会查找模式或名称吗

  15. 15

    用存储库模式查询

  16. 16

    在SQL数据库中存储图像标签会带来安全风险吗?

  17. 17

    实体框架6,我应该使用存储库模式吗?

  18. 18

    pkill会杀死自己(及其父进程)吗?

  19. 19

    杀死VNC服务器会杀死正在其上运行的进程吗?

  20. 20

    现代ORM与存储库/ IoW模式

  21. 21

    Ubuntu存储库会继续增长吗?

  22. 22

    通过信号杀死子进程,但是位置会影响吗?

  23. 23

    当我杀死“ cp”会怎样?它安全吗,会带来任何后果吗?

  24. 24

    持久性会杀死USB记忆棒吗?

  25. 25

    会强行杀死Android即时贴服务吗?

  26. 26

    JSON模式验证器可以被该模式杀死吗?

  27. 27

    保持电脑通电会杀死电池吗?

  28. 28

    Maven 会覆盖本地 Maven 存储库中手动修补的 jar 吗?

  29. 29

    线程执行的函数的return语句会自动杀死线程吗?

热门标签

归档