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