当前位置:网站首页>controller、service、dao之间的关系
controller、service、dao之间的关系
2022-06-29 16:53:00 【二哈喇子!】
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
我在上一篇文中说过代码编写流程
1、画页面,编写 A.jsp
2、编写客户请求地址,发起客户请求,编写 B.jsp
3、编写控制层代码 (xxxController.java)
4、编写业务层代码(xxxService.java)
5、编写数据持久层代码(xxxDao.java 和 xxxDao.xml)
————————————————————————————————————————
今天再来说一下他们之间的关系
提示:以下是本篇文章正文内容,下面案例可供参考
一、model
model层也就是数据库实体层,也被称为entity层,pojo层
一般数据库一张表对应一个实体类,类属性同表字段 一 一对应。

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

Eclipse中快速添加to String方法

Eclipse中快速添加构造方法

idea中快速添加Getter、Setter方法
此处借用网上经典动图展示:
idea中快速添加to String方法


idea中快速添加构造方法
此处借用网上经典动图展示:
二、Controller 业务控制层
controller层的功能为请求和响应控制。
controller层是不允许直接操作数据库的!controller层负责前后端交互,他是个桥梁,架起了外界与业务层的沟通,接受前端请求,调用Serice层的接口来控制业务流程,接收service层返回的数据,最后返回具体的页面和数据到客户端。
就像是一个公司一线工作人员要见公司老板反馈信息,所以这个一线人员就会通过经理与老板传达自己的目的,经理再经过整理后请示老板,最后把老板的反馈信息转给这个一线工作人员。
另外,Service对以后的分布式部署有极大的作用,它就像一个服务员,哪桌客人需要点菜了,就喊一声服务员!对应的,外界需要完成什么样的业务,就通过Controller去调用不同的Service,需要记住的是,Controller只是一个中间者或者转发者,不应该在Controller里暴露Service的业务逻辑,而应该直接转发Service的业务处理结果!
三、Dao 数据库持久化层;
dao层也被称为mapper层。
dao层就是和数据库打交道的,负责与数据库进行联络的一些任务都封装在此,dao层向数据库发送 SQL语句,完成数据的增删改查任务。
dao层的设计首先是设计dao的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。
DAO设计的总体规划需要和设计的表,和实现类之间 一 一对应。
DAO层所定义的接口里的方法都大同小异,这是由我们在DAO层对数据库访问的操作来决定的,对数据库的操作,我们基本要用到的就是新增,删除,更新,查询等方法。
因而DAO层里面基本上都应该要涵盖这些方法对应的操作。除此之外,可以定义一些自定义的特殊的对数据库访问的方法。
四、Service 业务层/服务层;
service层是建立在dao层之上的,建立了dao层后才可以建立Service层,而service层又是在controller层之下的,service层既调用dao层的接口,又要提供接口给controller层的类来进行调用,它刚好处于一个中间层的位置。
所有的内部的业务逻辑都会放在这里处理,
比如用户的增删改查,或者发送个验证码或邮件,或者做一个抽奖活动等等,都会在service中进行,service层调用dao层接口,接收dao层返回的数据,完成项目的基本功能设计,因此Dao层是必不可少的;
每个模型都有一个service接口,每个接口分别封装各自的业务处理方法。
总结
DBUtil.java
一般的,一个Controller对应一个Service,一个Service对应一个Dao,一个Dao对应一个数据库表,
当然根据项目或业务复杂程度,一个Controller可以调用多个Service,而一个Service也可以调用多个Dao,但是Controller层不允许互调,Service层也不允许互调,
就是AController不能直接调用BController
AService也不能直接去调用BService,遵循高内聚低耦合原则
本篇文章部分内容借鉴了其他博主的文章,但我忘了哪篇文章了,在此十分感谢那篇原创文章的博主
边栏推荐
- 代码大全读后感
- An error is reported in the Flink SQL rownumber. Who has met him? How to solve it?
- @Component与@Configuration区别
- 我的远程办公初体验 | 社区征文
- iNFTnews | Meta在元宇宙中的后续计划会是什么?
- 【OpenGL】杂谈一、通过鼠标拖拽实现相机绕空间中的某点进行球面旋转查看
- Possible reasons for not triggering onreachbutton
- UWB precise positioning scheme, centimeter level high-precision technology application, intelligent pairing induction technology
- ICML 2022 | 基于解耦梯度优化的可迁移模仿学习方法
- 知道创宇为能源行业资产管理助力,入选工信部2021物联网示范项目
猜你喜欢

如何利用OpenMesh实现不同格式的3D文件间的转换

贪婪的苹果计划提高iPhone14的价格,这将为中国手机提供机会

Perhaps in two years, ASML will be free to supply EUV lithography machines to China

Problem solving metauniverse, multi communication scheme in online games

为防止被00后整顿,一公司招聘要求员工不能起诉公司

可转债策略之---(摊饼玩法,溢价玩法,强赎玩法,下修玩法,双低玩法)

机器学习8-人工神经网络

Review of mathematical knowledge: curve integral of type I

@Difference between component and @configuration

Shenzhen internal promotion | Shenzhen Institute of computing science recruits assistant machine learning Engineer (school recruitment)
随机推荐
为什么信息化 ≠ 数字化?终于有人讲明白了
c# 国内外ORM 框架 dapper efcore sqlsugar freesql hisql sqlserver数据常规插入测试性能对比
C language microblog user management system
【无标题】
New feature of C11 - Auto and decltype type type indicators
How to distinguish between instructions and data in the "group counting" CPU
关于onReachButton 不触发可能原因
c# 国内外ORM 框架 dapper efcore sqlsugar freesql hisql sqlserver数据常规插入测试性能对比
Profil de risque de monnaie stable: l'usdt et l'USDC sont - ils sûrs?
Accelerate the implementation of intelligent driving projects? You still lack a truth evaluation system
连续10年霸榜第一?程序员「最常用」的编程语言是它?
Comment configurer logback? 30 minutes pour apprendre à coder et à frapper tard.
The understanding of industrial Internet is directly related to how we view it
Review of mathematical knowledge: curve integral of type I
自己实现一个ThreadLocal
机器学习7-支持向量机
STM32按键消抖——入门状态机思维
InheritableThreadLocal 在线程池中进行父子线程间消息传递出现消息丢失的解析
Why does selenium become the first choice for web automated testing? (source code attached)
微博评论高性能高可用架构设计(架构实战营 模块五作业)