【问题标题】:How to encapsulate database access?如何封装数据库访问?
【发布时间】:2023-10-04 17:53:01
【问题描述】:

我正在使用 .NET 开发一个事务性应用程序,并希望获得一些关于如何正确封装数据库访问的意见,以便:

  • 我没有所有的连接字符串 在这个地方
  • 多次调用同一个存储 不同功能的程序
  • 或更糟,多次存储 不同的程序 单列

我很想知道使用像 NHibernate 这样的 ORM 是否有用,因为它可能只会给快速变化的数据模型增加另一层复杂性,并且需要在紧迫的时间内生成工件。

我对 ORM 包以外的方法或模式更感兴趣。

【问题讨论】:

  • 非常广泛的问题。关于这个主题有整本书。

标签: database hibernate orm design-patterns encapsulation


【解决方案1】:

至少有两种被广泛接受的设计模式用于封装数据访问:

  • 存储库 (DDD)
  • DAO(数据访问对象)

为了完整起见,我建议您阅读以下书籍:

【讨论】:

    【解决方案2】:

    如果看起来这是一个重要的项目并且 DAL 是一个主要风险因素,请让以前做过的人参与其中。你说得对,在没有扎实经验的情况下,第一次尝试做对,有太多的方法会偏离轨道。

    有许多模式可以实现这一点,但我会寻找具有一组简单且定义明确的模式的人,他们完全可以接受。

    【讨论】:

      【解决方案3】:

      如上所述,查看存储库和工作单元模式。强烈推荐福勒和埃文斯的书。 karl seguin 的读者也是如此,它给了我对刚刚提到的书籍的更酷的介绍。抓住它http://codebetter.com/blogs/karlseguin/archive/2008/06/24/foundations-of-programming-ebook.aspx

      【讨论】:

        【解决方案4】:

        作为 Java 开发人员,我建议阅读 jdbc 模板,尽管它不是 .NET,但您可以了解 Spring 框架如何封装数据访问层并获得一些想法。

        【讨论】: