论坛首页 Java企业应用论坛

DAO的一个讨论问题

浏览 34048 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (8) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-07-18  
javaAK 写道
rihoonet 写道

那不是DAO模式的好处,是你分层分得好。。

有点可笑 DAO 不是分层分得好 那怎么会这么流行呢?

你才可笑,题目都没有看懂。。。。
0 请登录后投票
   发表时间:2008-07-19  
wm920 写道
总结:今天在对Action的业务类的方法实现时候,想了又想,为什么在一个Action里面写那么多实现方法对数据库的操作(select,update.....)而且每一个Action都要对应一个DAO的实现方法,每一个DAO的实现方法对对应的数据库的中唯一的一张表,为何不可把Action的对数据库的操作方法写在一个整合的DAO里面呢,在这个整合的DAO里面有的Action对数据库操作的各类的方法,而Action就做全面的数据的转发和JSP页面的跳转工作,当每次对JSP页面操作的时候,(select,update等)都会向整合的DAO执行操作,这个整合的DAO通过产生临时的ID字段负责的全程的对数据库的操作<select,update等>,整合的DAO进行逻辑的判断,进行相关的业务操作,在向不同的DAO的转发,然后在通过不同的DAO对映的数据库表进行操作。请问有人想个这个方法么,就是多张表,每一张表对应的一个DAO的实现类,在通过一个整合DAO实现方法对每个DAO的实现方法的整合,也就是1:n的关系(dao对多个dao的整合)通过整合dao的进行判断执行相关的操作,假如是表关联的话,通过临时字段的ID号判断,要进行那个DAO的操作(表),这样从而减少了Action里面有很多的业务实现方法,对数据库而言,就只有一次性的操作。从而大大的提高数据库的性能效率,有人这样做过么·? 请那个大人物指点下!谢谢

感觉这是少业务逻辑层的问题。为什么action要直接访问dao?dao层中为什么要加那么多的逻辑判断?如果action和dao间加一层service,有service执行逻辑判断,是不是可以避免这个问题?而且这样可以控制变化的影响范围。
0 请登录后投票
   发表时间:2008-07-19  
rihoonet 写道
加一个字段、或给字段重命名,是不是DAO里面的接口申明和和实现方法全部都要改?

好的DAO设计,修改BEAN就可以完成任务了呵。
0 请登录后投票
   发表时间:2008-07-19  
rihoonet 写道
DAO模式,我觉得太难用了,表结构一改,好多的地方都要改。

如果是每个表有一个对应的DAO,那么就不会出现这种情况了吧?
0 请登录后投票
   发表时间:2008-07-19  
spyker 写道
为什么把数据库的操作写道action中呢
建议创建逻辑层
在逻辑层中对数据进行操作
action调用逻辑层


这是常用的做法。。
但对于一个简单的系统,或者需要快速开发的项目,逻辑层合并在Action里也未尝不可。。

不太理解楼主的问题。。“整合DAO”。。是指一个DAO包含了对多个表操作的方法?这样当然可以阿,但这个类会不会很大呢?
一种对象 -> 一个表 -> 起码CRUD四个方法
5个表就20个方法了。。
0 请登录后投票
   发表时间:2008-07-19  
williamou 写道
spyker 写道
为什么把数据库的操作写道action中呢
建议创建逻辑层
在逻辑层中对数据进行操作
action调用逻辑层


这是常用的做法。。
但对于一个简单的系统,或者需要快速开发的项目,逻辑层合并在Action里也未尝不可。。

不太理解楼主的问题。。“整合DAO”。。是指一个DAO包含了对多个表操作的方法?这样当然可以阿,但这个类会不会很大呢?
一种对象 -> 一个表 -> 起码CRUD四个方法
5个表就20个方法了。。


action->service-->整合DAO(通过ID来分派到到底是那个表在执行操作,然后直达那个dao)-->一个DAO<表>--->database
0 请登录后投票
   发表时间:2008-07-19  
rihoonet 写道
DAO模式,我觉得太难用了,表结构一改,好多的地方都要改。


从个人的角度上来看,假如按照软件的结构化分层模式开发,会给系统带来效率的问题,也就是说用DAO来进行分层模式开发!
0 请登录后投票
   发表时间:2008-07-19  
效率问题大家遇到了么 通常这个dao交给spring容器管理  他市一个单例,大家争用的时候不晓得会不会产生性能问题
0 请登录后投票
   发表时间:2008-07-19  
johnnylzb 写道
laiseeme 写道
一直用一个basedao  不过用的是hibernate,一个通用的dao里面包括了一些基本的查询,添加修改删除等等,各个模块dao继承这个basedao,有这个模块相对个性的查询就写到这里面,通用的查询等等就调用basedao里面的方法


这种做法很好,我一向也是这样用,同时把BaseDAO设计成支持泛型,就更加通用和严谨。当然BaseDAO要是接口,把实现屏蔽起来。

对  BaseDAO中接口方法,比如addDomain,removeDomain等等  响应的实现类  比如  针对不同数据库可以实现成MysqlBaseDAO,OracleBaseDAO等等 举个例子  当然用hibernate,如果没有native query 数据库可以随意迁移的
0 请登录后投票
   发表时间:2008-07-19  
考虑下
service
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics