service层和dao层里的方法明明一样,实现类不调用dao层,而调用service

service层和dao层里的方法明明一样,实现类不调用dao层,而调用service

问题描述:

最近学习ssm框架,teacher讲课的时候都会创建dao层和service里边方法一摸一样,目前可能是我自己太迷茫,总觉着不能理解这种做法。有giegie能解释下吗,这三者如果在真实的开发中,都是饰演着什么角色吗?

dao全称Data Access Object,数据访问对象,是一种设计模式。
程序里是专门负责与数据库进行交互,进行增删改查的部分。
service层则是处理业务需求的部分。
之所以不把这两部分写在一起是为了解耦和
举个例子,有很多不同的功能可能会用到相同的访问数据库的方法
后台接收到前台传来的参数,分给不同的service层方法进行实现
service层方法再根据业务需求调用dao层的方法访问数据库获取数据
分成service和dao两层可以使得一些方法不用重复写,提高代码复用性

一般dao层 是和数据库交互的,比如Mybatis中的dao层 是MapperProxy代理生成的代理类,你看到的是接口其实在spring里面实例化的是一个class

service 层一般是定义的对外交互的接口层,给外部系统暴露接口使用,名称不一定要一模一样,只不过名称代表的意思一样即可,为了提高可读性

简单来说:
controller层,页面直接交互层,调用service;
service层,就是写逻辑、接收处理controller层传来的数据,处理返回dao层查到的数据;
dao层,就是查数据库使用的;