2、3年过去了,没想到最近Javaeye又有了对Domain设计的热贴,安耐不住,说说自己的想法。
2年前有过尝试RichDomainObject的设计,当时使用的hibernate2+SessionBean。
发现DomainObject必须要依赖Dao(一些业务逻辑执行前,需要对之前产生的DomainObject进行查询或汇总,根据结果判定执行逻辑);
同时为了查询的灵活,Service必须同时依赖Dao和DomainObject。
这样整个Server,实际上包括了4种东西:
Service、
ServiceDAO(ReadOnly)、
DomainObject、
DomainDAO(Read/Write)。
另外在Service层和各种Client端(Web/Swing/JavaApplication等)之间使用DTO传递数据。
注意DTO并不是与DomainObject一一对应的的PO无逻辑简化版本,相反DTO是与界面相关的,同一个DomainObject可能根据客户端(界面)的不同,有多个DTO与之对应。(演化到后来DTO变为了由集合、数组、String、Date、Integer等java基础类组合的一个数据结构,系统本身并不存在具体的DTO类,因为数据到界面后只为显示,并没有任何逻辑,无须用对象实现)。
这样的架构下,感觉DAO的处理上实在是繁琐的很,时时有绕过它直接使用hibernate的冲动!
技术在不断进化,JPA的出世,让我看到了一丝希望。
反思一下DAO出现的原始用意:
1)隔离数据库(JDBC)操作。[分层、弱化程序对数据库的直接依赖]
2)简化数据库间移植。[隔离具体数据库接口(SQL)细节,解除厂家邦定]
目前的JPA似乎完全满足了上面两种需求。
而且(JPA)是JAVA持久化API,不是JAVA数据库连接API(JDBC),其从概念上也是不依赖数据库的(完全有可能实现一个使用文件系统/XML进行持久化的JPA)。
同时,JPA本身也是一个隔离层,虽然目前作的不太完美,不过仍然给了你一个可以切换各种不同的JPA实现的机会。
现在看来我们是否可以抛弃DAO了呢?
让代码直接依赖java的标准api--JPA,就像依赖java.util一样?
分享到:
相关推荐
DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式
基于JSP+Servlet+JavaBean+JDBC+DAO的Web架构设计该系统,进一步了解并掌握如何对数据库进行操作,以及如何分析、设计一个应用系统。 需求要求: 该系统的基本需求是,系统要实现如下的基本管理功能: (1)用户分为...
实现利用Timer倒计时,调整Interval可调整分钟或小时
DAO设计模式 DAO 设计模式 JAVA设计模
当底层数据存储实现不需要发生改变时,该策略可以使用工厂方法设计模式实现,来产生应用中所需的DAO. 当底层数据储存实现不得不发生变化的时候, 我们可以用抽象工厂模式来实现这个策略. 在当前情况,可以提供一个抽象...
java,dao设计模式,主要介绍Dao三层架构的设计模式,让我们更加深入理解Java 框架。
1)dao类的繁多,很多设计都是一个entity对应一个dao (不同的只有类名和方法名) 2)dao接口需要维护的method庞大。 3)业务逻辑改变时,dao需要同时修改两个类文件(接口和实现类) 在本文中,我将为您展示如何...
李兴华DAO设计模式
j2ee 架构设计 第一部份:介绍实例架构 结合实例讲解Web项目总体结构 分析多层结构优点 具体讲解每个层次的实现技巧 第二部分:介绍组织层次关联利器(Spring) 快速入门 Factory模式 IOC模式 AOP模式 演练Spring的...
基于DAO设计模式的新闻发布系统基于DAO设计模式的新闻发布系统基于DAO设计模式的新闻发布系统基于DAO设计模式的新闻发布系统基于DAO设计模式的新闻发布系统
DAO设计模式是属于J2EE数据层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性。
本教程主要介绍了Dao设计模式,并且还有一些实例
详细设计实现过程中, 采用Netbeans、Eclipse、Oracle、Tomcat 等作为开发工具,在持久层使用轻量级ORM 开源框架Hibernate 技术,结合DAO 设计模式。用Spring 的IOC 和AOP 技术对持 久层和业务逻辑层对象进行管理,...
DAO(Data Access Object)是一个数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。 本文按照DAO设计模式的思想,设计并实现了该模式架构。
java设计 三层架构设计模型 javaWeb开发中常用模型
MVC三层架构+DAO工厂模式进行JAVA WEB开发
用简单易懂的例子说明DAO设计模式(附带sql脚本,mysql数据库)
DAO设计模式
DAO设计模式DAO设计模式,网上多份精华讲解汇总!
自己写的java Dao设计模式操作数据库,很方便。