orm - 构建数据访问层
问题描述
对于我的应用程序,我正在考虑使用 ORM,目前正在尝试确定域层是否应通过数据访问对象、存储库或其他方式与其交互?我很犹豫将 ORM 与存储库配对,因为如果 ORM 实体与域对象相同,它们可能会变得多余,但是拥有一个大的 DAO 似乎很笨拙。我想保持我的 SQL 集中,但我不知道这些选项中的哪一个(如果有的话)最有意义。关于适当的设计模式的任何建议?
解决方案
这是非常基于意见的,但我倾向于从我的领域模型中创建单独的实体。域模型需要与您的域密切匹配,而您的实体需要对您的存储进行密切建模。它们最初可能非常匹配,并且看起来确实是多余的,但它们通常很快就会彼此显着偏离。
话虽如此,除了将域实体映射到持久性实体之外什么都不做的包装器通常感觉很糟糕,而且是在浪费时间。此外,直到游戏后期,当您进行重构并且您意识到您的域不太正确,但您不想修改您的持久层时,它才会得到回报。
好消息是,大多数语言/框架都有某种形式的映射库,可以让你自动从一个对象映射到另一个结构相似的对象。这是最初加速此过程的好方法,同时当需求发生变化时,您仍然可以灵活地创建手动映射。
推荐阅读
- c# - 如何在 C#.Net 中使用 RibbonControl?
- azure - 在 Azure Application Insights 中查看错误响应文本
- python - 识别 PyCharm 子文件夹中的类
- ios - iOS Swift WKWebKit with MBCircularProgressBarView
- java - 如何在 Keycloak 身份验证之前调用 javax.servlet.Filter
- c++ - 这些结构的大小在文件中不同,但在程序内存中相同
- tcp - 奇怪的 TCP 转储序列
- ios - 如何在 UITableView 中添加和删除部分
- slack-api - 监控 Slack 和 PagerDuty 的连接性
- python - 在点击 django admin 登录页面时直接对用户进行身份验证