首页 > 解决方案 > 构建数据访问层

问题描述

对于我的应用程序,我正在考虑使用 ORM,目前正在尝试确定域层是否应通过数据访问对象、存储库或其他方式与其交互?我很犹豫将 ORM 与存储库配对,因为如果 ORM 实体与域对象相同,它们可能会变得多余,但是拥有一个大的 DAO 似乎很笨拙。我想保持我的 SQL 集中,但我不知道这些选项中的哪一个(如果有的话)最有意义。关于适当的设计模式的任何建议?

标签: ormarchitecturerepository-patterndata-access-layer

解决方案


这是非常基于意见的,但我倾向于从我的领域模型中创建单独的实体。域模型需要与您的域密切匹配,而您的实体需要对您的存储进行密切建模。它们最初可能非常匹配,并且看起来确实是多余的,但它们通常很快就会彼此显着偏离。

话虽如此,除了将域实体映射到持久性实体之外什么都不做的包装器通常感觉很糟糕,而且是在浪费时间。此外,直到游戏后期,当您进行重构并且您意识到您的域不太正确,但您不想修改您的持久层时,它才会得到回报。

好消息是,大多数语言/框架都有某种形式的映射库,可以让你自动从一个对象映射到另一个结构相似的对象。这是最初加速此过程的好方法,同时当需求发生变化时,您仍然可以灵活地创建手动映射。


推荐阅读