She*_*don 25 java sql dao web-applications architectural-patterns
正如我在标题中提到的,我很想知道你(经验丰富的开发人员)对DAO模式的使用的看法,特别是在Web应用程序中.你发现了什么样的优势以及它的使用带来了什么后果?
Met*_*002 21
我见过DAO的问题是它们通常一直处理完整的对象.这会产生完全不需要的开销,而简单查询则不会存在这种开销.例如,如果要从数据库引用数据创建下拉列表,则DAO用户可以简单地说:"获取此表的对象集合,其中y按y排序".然后,该数据用于下拉列表,但通常仅用于键/值组合,忽略已检索和映射的对象中的所有其他内容(已创建的数据,更新它的最后一个用户,无论是否处于活动状态等) .即使这种按摩发生在DAO调用附近并且对象在检索时也不会被存储(通常情况并非如此),不幸的是,对象通常包装在ac:forEach(JSP)中并迭代生成下拉列表),它仍然会产生不必要的数据库和网络开销,更不用说暂时增加内存来容纳这些对象了.
现在,这并不是说DAO不能被设计为检索参考数据的映射 - 它当然可以.但通常它们用于完整的对象映射,这不是一直需要的.保存时它是一种优势,但IMO在检索数据时是一个弱点 - 当然,你得到了所有这些 - 但通常你不需要全部,而且它只会浪费内存,带宽和时间.
bog*_*ron 14
优点:
缺点:
DAO或数据访问对象设计模式是抽象和封装面向对象原则的一个很好的例子.它分离持久性逻辑是一个名为数据访问层的独立层,它使应用程序能够安全地对持久性机制中的更改做出反应.例如,如果从基于文件的持久性机制转移到数据库,则您的更改将仅限于数据访问层,并且不会影响服务层或域对象.数据访问对象或DAO模式在Java应用程序中是非常标准的,它是核心Java,Web应用程序或企业应用程序.以下是在Java应用程序中使用DAO模式的几个好处:
DAO设计模式还在应用程序的不同部分之间保持低耦合.通过使用DAO设计模式,您的视图层完全独立于DAO层,并且只有服务层具有对它的依赖性,这也是使用DAO接口抽象的.
DAO设计模式允许JUnit测试运行得更快,因为它允许创建Mock并避免连接到数据库以运行测试.它改进了测试,因为使用Mock对象编写测试很容易,而不是使用数据库进行集成测试.在任何问题的情况下,在运行Unit测试时,您只需要检查代码而不是数据库.还可以屏蔽数据库连接和环境问题.
由于DAO模式基于接口,因此它还促进了面向对象的设计原则"接口编程而不是实现",从而产生灵活和高质量的代码.
归档时间: |
|
查看次数: |
19068 次 |
最近记录: |