0%

Java web开发中的各种层作用理解

前言

一般的项目模块中都有Dao层、Entity层、Service层、Controller层和View层,今天来分享一下个人对各层作用的理解;

1、Dao层(持久层、数据访问层、Mapper层)

功能:访问数据库,向数据库发送sql语句,完成数据的增删改查任务,实现数据的持久化,使用@Repository和@Mapper注解都可用于标注数据访问组件Dao层;

​ 两个注解的区别:

  • @Mapper注解是MyBatis的注解,用来说明这个是一个Mapper,对应的xxxMapper.xml就是来实现这个Mapper,在Sevice层使用@Autowired注解引用Dao层会报红但是不影响使用,这是因为@Autowired是Spring的注解,会提示找不到相应的bean,这里可以用JDK的注解@Resource替代@Autowired;
  • @Repository注解是Spring的注解,用来把当前类注册成一个bean,在Service层通常使用@Autowired注解引用Dao层,但需要在主要启动类配置@MapperScan注解;

使用流程:Dao层先要设计Dao接口,然后在配置文件中定义该接口的实现类,接着就可以在Service层调用Dao层的接口进行业务处理;

个人理解:Dao层只是定义方法接口,然后在Service层的xxxServiceImpl实现类调用接口的方法,从而达到操作数据库的目的。Dao层对数据库进行数据持久化操作,方法语句主要是针对数据库实现的一些增删改查操作,在Mapper中的方法与xxxMapper.xml一一映射。

2、Service层(业务逻辑层)

功能:用于实现操作的具体方法,包含了对页面操作模块的代码;

个人理解:Service用于存放业务逻辑处理,不直接和数据库打交道,Service层是建立在DAO层之上的,同时又是在Controller层之下的,因而Service层应该既调用DAO层的接口进行实现,又要提供封装后的接口给Controller层的类来进行调用,它刚好处于一个中间层的位置,不仅有面向Controller层的接口也有对Dao层接口的实现方法,Dao层接口的实现方法在xxxServiceImpl文件中,标注@Service注解,把mapper和service进行整合封装Service层的业务逻辑;

3、Controller层(表现层、控制层)

功能:控制业务逻辑,负责具体业务模块流程的控制;

个人理解:Controller层负责请求转发,接收页面过来的参数后传给Service层处理,接到返回值后再返回给页面。Controller层一般会和前端以json文件进行数据的交互, Controller层是前台数据的接收器,后台处理好的数据也是通过Controller层传递到前台进行显示的;xxxController上标注@RestController注解,具体方法上标注@RequestMapping注解或具体的@xxxMapping(Get、Post…)注解

4、View层(视图层)

功能:此层与Controller层联系紧密,需要协同开发。View层主要负责前台页面的展示

5、Model层(Entity层、实体层)

功能:与entity、domain、pojo类似,是存放实体的类,类中定义了多个类属性,并与数据库表的字段保持一致,一张表对应一个model类。 主要用于定义与数据库对象应的属性,提供getter/setter方法,tostring方法,有参和无参构造器;