Java中Controller、Service、Dao/Mapper层的区别与用法
作者:岚天、 发布时间:2022-09-12 15:14:03
1、Service层:业务层–>控制业务
业务模块的逻辑功能设计,和DAO层一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联。接下来就可以在service层调用接口进行业务逻辑应用的处理。
好处:封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。
2、Controller层:控制层–>调用业务层方法来控制业务逻辑
controller层主要调用Service层里面的接口来控制具体的业务流程,控制层的配置也要在配置文件中进行。
Controller和Service的区别是:Controller负责具体的业务模块流程的控制;Service层负责业务模块的逻辑应用设计
3、Dao/Mapper层:持久层,主要与数据库交互
Dao层首先会创建Dao接口,接着就可以在配置文件中定义该接口的实现类;然后就可以在模块中调用Dao的接口进行数据业务的处理,而不用关注此接口的具体实现类是哪一个类,Dao层的数据源和数据库连接的参数都是在配置文件中进行配置的。
以下是更专业的详解
Controller层
Controller层是Java Web应用程序里面的控制层,主要负责接收客户端发送的请求、调度Service层的各个方法,并将处理的结果返回给客户端。同时,Controller层也可以对请求参数进行校验,防止错误数据的处理和提交。
Controller层主要使用 Spring MVC 相关的注解来映射请求和处理请求结果。例如,@RequestMapping注解用于配置基于请求URL的映射,@Controller注解用于标识该类为控制器类,@ResponseBody注解用于将返回结果序列化成JSON等格式返回给客户端。
Service层
Service层是Java Web应用程序里面的业务逻辑层,主要负责处理业务逻辑、实现数据校验、事务控制、权限控制等方面。Service层通过调用Dao/Mapper层的接口来操作数据库,以完成具体的业务目标。
为了能够实现业务逻辑的独立性和可重用性,Service层通常采用接口+实现类的方式进行开发。Service层主要使用@Autowired
注解来注入Dao/Mapper层的实例,并使用@Transactional
注解来定义事务。
Dao/Mapper层
Dao/Mapper层是Java Web应用程序里面的数据访问层,主要负责与数据库进行交互,进行数据读取、写入、修改、删除等操作。Dao/Mapper层通常使用Spring Data JPA、MyBatis等开源框架进行ORM操作。
在Dao/Mapper层中通常有一个Java接口和一个对应的XML文件(或注解方式进行映射),用于定义SQL语句,以完成数据的增、删、改、查操作。Dao/Mapper层中的方法会由Service层来调用,通过调用SQL语句来完成与数据库的交互。
总之,Controller、Service、Dao/Mapper层是Java Web应用程序中常用的三层架构,分别负责接收请求、处理业务逻辑和与数据库交互。合理地划分和组织这三层的代码,可以简化程序的开发和维护,提高代码的可重用性和可维护性。
来源:https://blog.csdn.net/weixin_46310452/article/details/130877544


猜你喜欢
- 开发中经常需要将某个文件向另一个应用程序传递,如图片上传到另一个应用程序、文件在不同存储路径之间的复制粘贴等都需要共享文件,可以这样理解接收
- 背景前些天遇到一个需求,在没有第三方源码的情况下,刷新一个第三方UI,并且拦截到其ajax请求的返回结果。当结果为AVALIABLE的时候,
- 位运算 位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指
- 在maven中有几种方法打包项目,在之前的一篇博客中【Java】打包Jar包并用脚本执行,已经介绍了怎么在没有maven插件的情况下,怎么打
- 方法一:res/values文件夹下建立styles.xml:<?xml version=“1.0″ encoding=“utf-8″
- 现假设某个公司采用公用电话来传递数据,数据是四位的整数,在传递过程中是加密的。加密规则是每位数字都加上5,然后再用除以10的余数代替该数字,
- 本文实例为大家分享了Java实现二分查找的变种,供大家参考,具体内容如下普通二分查找:先回顾一下普通的二分查找注意:二分查找有这样一个问题:
- 前言Java中URL传中文时乱码的问题相信不少朋友都遇到过,最近就遇到一个问题,就是在Action当中把一条中文信息绑定在URL的后面,Ac
- 本文实例为大家分享了Android实现全局悬浮框的具体代码,供大家参考,具体内容如下效果图:代码实现:Androidmanifest.xml
- 项目开发的过程中,经常会遇到添加水印的需求,其作用无非就是防止重要信息通过截图外传。(虽然我觉得并没有什么卵用,但领导的需求是不容质疑的)那
- step1:先移除centos自带的jdkrpm -qa|grep javarpm -e --nodeps xxstep2:安装jdk (所
- 本文实例为大家分享了Android扫描和生成二维码的具体代码,供大家参考,具体内容如下MainActivity.javapublic cla
- 前面一篇有说道如何在MyEclipse中搭建maven项目,这里将继续介绍如何在搭建好的基础maven项目中引入我们常用的javaweb框架
- 其实如果我们不进行设置,只是修改了代码,运行程序以后,其出错界面如下图1所示:图1抛出异常如下:************** Excepti
- Spring security记住我基本原理:登录的时候,请求发送给过滤器UsernamePasswordAuthenticationFil
- eclipse中的javac命令与java命令一、eclipse的javac命令:当eclipse对.java(源文件)文件进行保存操作时(
- SLF4J是一个日志框架抽象层,底下绑定具体的日志框架,比如说Log4J,Logback,Java Logging API等。SLF4J也有
- 目录1、一个抽象类并不需要其中所有的方法都是抽象的。( )2、下列程序的运行结果3、在Java中,关于HashMap类的描述,以下错误的是(
- 1. 通过设置采样率压缩res资源图片压缩 decodeResource public Bitmap decodeSampled
- 前言假设项目打包后,项目结构为:此时如果需要再windows环境中进行项目的启动或关闭,需要频繁的手敲命令,很不方便。此时可以编写.bat脚