java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > controller & service & dao的关系

controller & service & dao之间的关系及解读

作者:二哈喇子!

本文介绍了软件开发中Controller、Service、Mapper和Entity层的概念及其关系,类比于餐厅工作流程解释各层职责,Entity层定义数据结构,Service层处理业务逻辑,Mapper层与数据库交互,Controller层接收用户请求,同时提供了Eclipse和IDEA中自动生成方法的快捷操作说明

不要把所有代码写在同一个类里,要遵循单一原则,一个类只干一件事

后端各层级之间关系

提示:这里可以添加本文要记录的大概内容:

图很重要

先用更通俗易懂的方式来解释controller(控制器)、service(服务层)、mapper(数据访问层)以及实体层之间的关系。

想象一下你去一家餐厅吃饭的情景:

Controller(控制器)

Service(服务层)

Mapper(数据访问层)

实体层(Entity Layer)

总结来说:

整个流程就像一个餐厅的工作流程一样:顾客(前端用户)下单(发送请求),服务员(Controller)将订单交给厨师(Service),厨师准备食材(从数据库获取数据),并让厨房工作人员(Mapper)烹饪菜品(执行数据库操作),最后将菜品送到顾客手中(返回响应给前端用户)。

一、Model 数据库实体层

model层也就是数据库实体层,也被称为entity层,Bean,pojo 或 po

一般数据库一张表对应一个实体类,类属性同表字段 一 一对应。

Model层是被封装起来的,Service层和DAO层只负责访问和操作Model层,不直接与Model层交互。

Model层也可以包括其他的数据模型、数据库或文件系统等,以完成业务数据的存储、访问和操作。

model层就像是蛋糕的原材料,比如鸡蛋、面粉、糖、牛奶等等。

是用来描述数据的,定义了数据的属性和行为

比如一个User对象就可以包含用户名、密码、邮箱等属性,也可以拥有登录、注册等行为。

实体层中一般会自动生成Getter、Setter、to String方法和构造方法

具体怎么生成放在了文章下面

二、Controller 业务控制层

controller层的功能为请求和响应控制。它不允许直接操作数据库

主要负责接收前端用户请求,并将请求转发给相应的Service层进行处理,处理Service层返回的结果,并将结果响应给前端。

比如可以通过UserController来处理和控制用户请求,实现用户登录、注册、修改信息等操作。

三、Service 业务逻辑层/服务层

所有的内部的业务逻辑都会放在这里处理

Service层是整个系统的业务逻辑处理中心,负责对业务数据进行处理和计算,并将处理结果返回给Controller层。

此外,Service层也需要调用DAO层对数据进行访问和操作,以完成业务逻辑处理。

通过规范对dao层提供的功能进行封装和组装,实现更加复杂的操作,比如可以实现对用户进行注册、登录、修改信息等业务操作。

四、Dao 数据库持久化层

dao层也被称为mapper层,全称是DataAccessObject数据访问对象

DAO层是用来访问数据库的,负责执行数据访问和操作,包括对数据库的访问和操作、文件系统的存取等,就是和数据库打交道的,与数据库进行联络的一些任务都封装在此,向数据库发送 SQL语句,可以实现对数据库的增删改查操作

为Service层提供数据访问的支持和服务。并隐藏了数据访问的细节,并提供了一组简单易用的接口,方便Service层调用和使用。

DAO设计的总体规划需要和设计的表,dao类一般也是和数据库中的表对应,采用驼峰式命名:表名+Dao

五、View 视图

它可以返回HTML页面、JSON等数据格式,处理表单数据,进行一些计算或数据库查询操作等等

扩展

一般的,一个Controller对应一个Service,一个Service对应一个Dao,一个Dao对应一个数据库表,

当然根据项目或业务复杂程度,一个Controller可以调用多个Service,而一个Service也可以调用多个Dao,但是Controller层不允许互调,Service层也不允许互调,

就是AController不能直接调用BController

AService也不能直接去调用BService,遵循高内聚低耦合原则

本篇文章部分内容借鉴了其他博主的文章,但我忘了哪篇文章了,在此十分感谢那篇原创文章的博主

实体类中快速添加自动生成方法

新建实体类后要有四个步骤:

1、手写私有属性,与表中列对应

2、自动生成两个构造方法

3、自动生成Getter、Setter方法

4、自动生成重写toString方法

Eclipse中快速添加构造方法

有参和无参构造方法

Eclipse中快速添加Getter、Setter方法

Eclipse中快速添加to String方法

IDEA中快速添加构造方法

此处借用网上经典动图展示:

IDEA中快速添加Getter、Setter方法

此处借用网上经典动图展示:

IDEA中快速添加to String方法

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文