关于service层和DAO层的几点疑惑

首先,service层会很大,方法很多。第二,试想,所有DAO都有增删改查四个基本方法。假设在DAO层(如StudentDAO.java)里student.add(),s... 首先,service层会很大,方法很多。
第二,试想,所有DAO都有增删改查四个基本方法。假设在DAO层(如StudentDAO.java)里student.add(),student.delete().student.update(),student.query()。
而如果应用增加了service层(如ApplictionServiceImpl.java),需要在service层中加上
applicationService.addStudent(),deleteStudent(),updateStudent(),queryStudent()四个方法。
这时你需要更新service层的接口类ApplicationService.Java,加上这四个方法。然后再更新service层的实现类ApplicationServiceImpl,加上这四个方法,最后你发现这四个方法每个方法里都只有一句话(以addStudent()为例)
public int addStudent(Student student){
return student.add();
}
这样是不是太傻了点,还不如在action中直接调用StudentDAO中的student.add()。
以上是我的个人看法,请各位指点
lovepetrel 是从网上copy过来的http://zhidao.baidu.com/question/46421595.html 已经看过了 就不多说了
Proc_871113写的很详细 先谢谢你 但是我还是有点不明白 能给我个例子么 有代码的 !
展开
 我来答
Proc_871113
推荐于2016-06-01 · TA获得超过549个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:170万
展开全部
这么来讲好了 按你所说 在action中直接调用StudentDAO中的student.add()。 现在有客户A 客户B

客户A的需求是 addStudent 这个和你所说的情况一致

客户B的需求是 addStudent 前去加一个动作 将学生父母的信息也插入数据库

这时如果按照只调用DAO的方法的话,你需要从新建立一个action
CustomerBAction
再重新写一个DAO 因为这个DAO里要有添加父母的方法 student.addStudentAndParentInfo()。

CustomerBAction 去调用 student.addStudentAndParentInfo()。

这样加大了很多工作量

如果中间有service层的话 action始终用一个action
而调用的也是service接口 只要对接口注入不同的实现就可以满足 不同客户的需求了

知识要活学活用,要按照自己项目以后的发展趋势来搭设环境,别人家说什么就用什么。其实有时候javabean+jsp 也很好用啊,因为jsp不用重启服务 开发速度很快。我做小项目就是这种模式,以后小项目的更改也会很少,所以不用搭建的过于复杂。
aaronswon
2009-10-13 · TA获得超过3481个赞
知道大有可为答主
回答量:1863
采纳率:0%
帮助的人:1620万
展开全部
首先是层次清晰,dao只管是数据库打交道,service面相用户,另外不得不说的是service层是基于dao层的功能加强层,你可以在调用dao方法的同时做很多其他的事情,如:先查询,如果系统做大了做复杂了,你会发现这样做的好处的~~ 系统功能简单看上去是很蹩脚 因为就是简单的增删改查
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5195152
2009-10-13 · TA获得超过1164个赞
知道大有可为答主
回答量:1314
采纳率:0%
帮助的人:714万
展开全部
你做的是个简单的业务

比如一个业务流程:
1.删除
2.添加
3.查询
4.判断是否存在
5.如果存在更新
6.不存在添加
....

你不能都写在dao的一个方法中吧
那么就需要再封装一层service

dao : Data Access Object数据访问接口,只提供简单数据库操作方法
service :提供各种业务逻辑服务
...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pppeee9
2009-10-13 · TA获得超过388个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:144万
展开全部
你感觉傻只是因为你限于经验的原因,所见的项目所用的方法不多而已。
从基本的使用方式来说,在service层是面向于具体的实现功能,所有的数据库的具体操作在Dao层实现。在实际的项目中,很多的功能都是需要多个Dao进行组合的,还有一些功能方法可能根本不用DAO的都是在service层实现,service层是一个项目的核心模块,所有定义的功能都在这,在Action中需要调用的只是这些功能的方法名。
从具体的应用来看,则是,在实际的开发过程中,客户的需求功能会经常变化的,功能的添加和减少是很正常的事情,而代码的编写则是以最少的改动来实现目标,分层是对效率的优化。这在练习一些小项目中是感觉不到的,呵呵。
说白了,就是存在即合理,有需求才有这种模式的存在,希望对你有帮助。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lovepetrel
2009-10-13 · TA获得超过1531个赞
知道小有建树答主
回答量:857
采纳率:100%
帮助的人:0
展开全部
额。。那算了,只是懒的打字而已,呵呵,感觉这个已经说的很明白了,以后你多做项目就知道了,尤其是大点的项目
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式