也许这不是一个技术问题,但我敢打赌这里有很多经验丰富的开发人员可以帮助我回答这个问题
谢谢
正如 Sajit 所说,DAO 层本质上是一种抽象。不过我不同意他的解释。抽象某些东西以实现目标的意义——通常是一些更复杂的用例的简化。
您可以轻松地创建一个 DAO 层,该层还提供了比简单地执行应用程序实体 - 数据实体映射更多的功能。它可以提供缓存、优化、翻译、弹性等。所以它没有理由不能提供更好地扩展应用程序的能力。
最终取决于条款 - 缩放对您的应用程序意味着什么?更多更快 ???等等
Dao 通常用于抽象出应用程序中数据库的实现细节,与可伸缩性无关。
DAO(数据访问对象)用于在数据库之上提供一个抽象层。它往往具有最终打开连接并执行查询和/或存储过程的方法。
我认为当涉及到可伸缩性问题时,您需要注意 DAO 中的一件主要事情:连接管理。如果您正在使用一些第三方库,也许类似于Hibernate的东西,您很可能不必担心连接,因为这些是由库本身管理的。
另一方面,如果您自己实现所有内容,则需要确保在可能的最后一刻打开连接并在可能的第一时间释放它。拥有一个占用连接的 DAO 最终将限制您的应用程序的扩展方式。
最后,在某些情况下,DAO 将直接查询传递给数据库。您需要密切关注如何构建这些查询,以确保它们不涉及任何不必要的处理。
用非常简单的话来说,如果一切都捆绑在一起,您真的无法制作可扩展的应用程序。DAO 只是帮助您处理数据访问逻辑的另一层。这样你就知道在哪里可以找到你的动态 sql 和东西,并且可以增强和维护它。