栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

存储库模式-如何理解它以及它如何与“复杂”实体一起工作?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

存储库模式-如何理解它以及它如何与“复杂”实体一起工作?

您可以阅读我的“傻瓜存储库” 帖子,以了解存储库的简单 原理
。我认为您的问题是您正在使用DTO,在这种情况下,您实际上并没有使用存储库模式,而是在使用DAO。

存储库和dao之间的主要区别在于,存储库仅返回 调用层可以理解的
对象。大多数时候,存储库被业务层使用,因此它返回业务对象。dao返回的数据可能是也可能不是整个业务对象,即该数据不是有效的业务概念。

如果您的业务对象只是数据结构,则可能暗示您存在建模问题,即设计不良。存储库对于“丰富”或至少正确封装的对象更有意义。如果仅加载/保存数据结构,则可能不需要存储库就可以了。

如果要处理由其他对象(聚合)组成的业务对象,并且该对象需要其所有部分才能 保持一致
(聚合根),那么存储库模式是最佳解决方案,因为它将抽象所有持久性详细信息。您的应用将只要求一个“产品”,并且存储库将整体上将其返回,而不管要恢复该对象需要多少张表或查询。

根据您的代码示例,您没有“真实的”业务对象。您具有Hibernate使用的数据结构。根据业务概念和用例设计业务对象。该存储库使BL不必关心该对象的持久化方式。在某种程度上,存储库充当对象和将要持久化的模型之间的“转换器/映射器”。基本上,存储库将对象“还原”为持久性数据所需。

业务对象 不是 ORM实体,它 可能
是从技术角度来看的,但从设计角度来看,一个模型业务对象,其他模型持久性对象。在许多情况下,这些不是直接兼容的。

最大的错误是根据存储需求和思维方式设计业务对象。与许多开发人员所认为的相反,ORM的目的不是持久化业务对象。其目的是在rdbms之上模拟“
oop”数据库​​。ORM映射是在数据库对象和表之间,而不是在应用程序对象(处理业务对象时更少)和表之间。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/466991.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号