像其他很多模式一样,DAO也面临很多争议,到今天也非业界公认的best practice.
O/R Mapping及其代表hibernate更不一定非要和DAO扯上关系。使用O/R Mapping完全可以不使用DAO模式。
O/R Mapping本身就是为了弥补OO和RDB之间的语义差距,做到数据库层对OO层业务逻辑的屏蔽。最理想的O/R Mapping应该是在RDB上,对OO各种方法论完全没有影响。显然,很遗憾,Hibernate没能做到这一点。
================================================================
这3条评论最肤浅!
1:请这位写一个非DAO模式的J2EE应用出来给我看看,不要光说不练!拿一些大词来吓人,大家都是搞技术的,没这个必要!DAO模式是在ORM之前就已经很成熟的持久层模式,不过ORM普及后DAO模式有了很多变种,但是围绕核心还是一种剥离业务的数据访问策略,而并非一种设计模式。这位居然大谈DAO不是最佳实践让我很纳闷。
2:不用DAO如何访问持久层,早期的Facade,SessionFacade就是现在的DAO前生,如果有异议,请你给出一个例子我看!DAO者 DATA ACCESS OBJECT也,是对象,不是模式。
3:只有第1句话是一句比较好的评论,后面的全是狗屁!把OR做到RDM是不是非OO语言还不能使用这种RDM了!我要跑个JCA Services还要跑N种RDM RAI了!简直瞎说