永发信息网

java中dao层和service层的区别,为什么要用service

答案:1  悬赏:30  手机版
解决时间 2021-04-04 04:24
java中dao层和service层的区别,为什么要用service
最佳答案
楼主您好
service是业务层,dao是数据访问层。
呵呵,这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接调用dao,service里面就new一个dao类对象,调用,其他有意义的事没做,也不明白有这个有什么用,参加工作久了以后就会知道,业务才是工作中的重中之重。
我们都知道,标准主流现在的编程方式都是采用MVC综合设计模式,MVC本身不属于设计模式的一种,它描述的是一种结构,最终目的达到解耦,解耦说的意思是你更改某一层代码,不会影响我其他层代码,如果你会像spring这样的框架,你会了解面向接口编程,表示层调用控制层,控制层调用业务层,业务层调用数据访问层。
初期也许都是new对象去调用下一层,比如你在业务层new一个DAO类的对象,调用DAO类方法访问数据库,这样写是不对的,因为在业务层中是不应该含有具体对象,最多只能有引用,如果有具体对象存在,就耦合了。
当那个对象不存在,我还要修改业务的代码,这不符合逻辑。好比主板上内存坏了,我换内存,没必要连主板一起换。我不用知道内存是哪家生产,不用知道多大容量,只要是内存都可以插上这个接口使用。这就是MVC的意义。
接下来说你感觉service的意义,其实因为你现在做东西分层次不是那么严格,在一个你们做东西业务本身也少,举个最简单的例子,你做一个分页的功能,数据1000条,你20条在一个页,你可以把这个功能写成工具类封装起来,然后在业务层里调用这个封装的方法,这才是业务里真正干得事,只要没访问数据库的,都要在业务里写。

再有不明白的追问,这是经验问题,呵呵,其实以后你就会懂。只是刚开始写的代码都是有个请求,我就去数据库取,业务几乎没有。
比说你现在用的是SSH框架,做一个用户模块:
1、假设现在你做这个功能会用到user表和权限表,那么你前台的页面访问action,action再去调用用户模块service,用户模块service判断你是操作user表还是权限表,如果你操作的是user表则service的实现类就去调用userDAO。如果是操作的是权限表则调用权限的DAO
2、也就是说DAO一定是和数据库的每张表一一对应,而service则不是。明白的没?其实你一个项目一个service和一个DAO其实也一样可以操作数据库,只不过那要是表非常多,出问题了,那找起来多麻烦,而且太乱了
3、好处就是你的整个项目非常系统化,和数据库的表能一致,而且功能模块化,这样以后维护或者改错比较容易,性能也高一些
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我电脑安装不了软件,求一个已经安装了的跑跑
毕业工作后想考研
我2003年在湖北教育学院函授学习,能到大专证
DNF怎么换装,我要的是换装的步骤,就是先干
陆龟垫材多久更换一次
结婚领证到底男23女21?还是男22女20?
将一个自然数旋转180°后,可以发现一个有趣
宋代散文漫议阅读答案
走马观花猜灯谜打一动物
数控裁条割厚板时出现割痕啥原因
婚后我父母全额付了一套房,如果房产证上要写
经典英语励志谚语大全,英语经典的鼓励谚语和
为什么yeti有很多0公里的二手车
上海锐世实业发展有限公司怎么样?
为什么我在手机上斑点这么明显而在镜子里没这
推荐资讯
虹版主是什么
二十兆等于多少KB
梦幻西游装备无心插柳可以带几件
月殿是什么意思,上殿下月念什么
一个才和斗成语
为什么从岸上看会觉得水的深度比它的实际深度
联想笔记本电脑触控板键盘陷下去 怎么办
all the year round 的 round
为什么信长之野望里没有北海道
求一个按键精灵脚本 无限按` 键(就是1左边那
铺垫的作用
韩国陛下叫读音
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?