Java--代码各层级介绍(controller、service、mapper、po、vo等)

148 篇文章 9 订阅
订阅专栏

要了解各层作用,首先整体看下架构图

架构图:
在这里插入图片描述
MVC模型:
在这里插入图片描述

Java的(dao、service、controller)解释

1、dao(mapper)层:数据访问层

dao层属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一 一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查。

负责与数据库进行联络的一些任务都封装在此,dao层的设计首先是设计dao层的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可以再模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,dao层的数据源配置,以及有关数据库连接参数都在Spring配置文件中进行配置。

2、service层:服务层

粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务,所以这里也就不会是一个原子操作了,需要事物控制。

service层主要负责业务模块的应用逻辑应用设计。同样是首先设计接口,再设计其实现类,接着再Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用service接口来进行业务处理。service层的业务实,具体要调用已经定义的dao层接口,封装service层业务逻辑有利于通用的业务逻辑的独立性和重复利用性。程序显得非常简洁。

3、controller层

Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。

controller层负责具体的业务模块流程的控制,在此层要调用service层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里进行,针对具体的业务流程,会有不同的控制器。我们具体的设计过程可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块。这样不仅使程序结构变得清晰,也大大减少了代码量。

关系

Service层是建立在DAO层之上的,建立了DAO层后才可以建立Service层,而Service层又是在Controller层之下的,因而Service层应该既调用DAO层的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。每个模型都有一个Service接口,每个接口分别封装各自的业务处理方法。

Java的(PO,VO,TO,BO,DAO,POJO)解释

PO(persistant object) 持久对象
在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。

VO(value object) 值对象
通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。

TO(Transfer Object),数据传输对象
在应用程序不同tie(关系)之间传输的对象

BO(business object) 业务对象
从业务模型的角度看,见UML元件领域模型中的领域对象。封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。

POJO(plain ordinary java object) 简单无规则java对象
纯的传统意义的java对象。就是说在一些Object/Relation Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法。我的理解就是最基本的Java Bean,只有属性字段及setter和getter方法!。

DAO(data access object) 数据访问对象
是一个sun的一个标准j2ee设计模式,这个模式中有个接口就是DAO,它负持久层的操作。为业务层提供接口。此对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作。夹在业务逻辑与数据库资源中间。配合VO, 提供数据库的CRUD操作…

O/R Mapper 对象/关系 映射
定义好所有的mapping之后,这个O/R Mapper可以帮我们做很多的工作。通过这些mappings,这个O/R Mapper可以生成所有的关于对象保存,删除,读取的SQL语句,我们不再需要写那么多行的DAL代码了。

实体Model(实体模式)
DAL(数据访问层)
IDAL(接口层)
DALFactory(类工厂)
BLL(业务逻辑层)
BOF Business Object Framework 业务对象框架
SOA Service Orient Architecture 面向服务的设计
EMF Eclipse Model Framework Eclipse建模框架

po和vo区别

VO,值对象(Value Object),PO,持久对象(Persisent Object),它们是由一组属性和属性的get和set方法组成。从结构上看,它们并没有什么不同的地方。但从其意义和本质上来看是完全不同的。

1.VO是用new关键字创建,由GC回收的。
  PO则是向数据库中添加新数据时创建,删除数据库中数据时削除的。并且它只能存活在一个数据库连接中,断开连接即被销毁。

2.VO是值对象,精确点讲它是业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是为数据提供一个生存的地方。
  PO则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使我们的程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换。

3.VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。
  PO的属性是跟数据库表的字段一一对应的。


PO是持久化对象,需要实现序列化接口。它只是将物理数据实体的一种对象表示,为什么需要它?因为它可以简化我们对于物理实体的了解和耦合,简单地讲,可以简化对象的数据转换为物理数据的编程。VO是什么?它是值对象,准确地讲,它是业务对象,是生活在业务层的,是业务逻辑需要了解,需要使用的,再简单地讲,它是概念模型转换得到的。
首先说PO和VO吧,它们的关系应该是相互独立的,一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(当然我是指他们的属性)。正因为这样,PO独立出来,数据持久层也就独立出来了,它不会受到任何业务的干涉。又正因为这样,业务逻辑层也独立开来,它不会受到数据持久层的影响,业务层关心的只是业务逻辑的处理,至于怎么存怎么读交给别人吧!不过,另外一点,如果我们没有使用数据持久层,或者说没有使用hibernate,那么PO和VO也可以是同一个东西,虽然这并不好。

SpringBoot框架分层(View层、Controller层、Service层、Mapper层、pojo层)
m0_67393827的博客
09-08 1898
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
如何使用使用三层MapperServiceController对数据库进行增删改操作
qq_58341172的博客
11-26 3302
Java架构中,通常采用MVC模型,其结构主要包括DAO(Mapper)、ServiceController三层Mapper(DAO)层:这是数据访问层,主要负责与数据库进行交互。具体来说,对某个表的增删改查等底层数据操作都在这一层实现。每个DAO通常与数据库的一张表对应,封装了针对该表的基本操作如增删改查等。为了保持结构清晰,建议DAO只做原子操作。在这一层,首先设计接口,然后在Spring配置文件中定义接口的实现类。这样,在模块中调用接口时,就不需要关心具体的实现类是哪个。
SpringBoot(三层框架Controller,Mapper,Service)中遇到的一些注解整理
qq_36018057的博客
01-19 2317
本文主要从Controller层,Service层,Mapper层这三层架构中记录用到的各种注解还有一些MyBatis用到的注解持续更新到本人的毕设做完为止,太多了太多了根本学不完哈哈哈。
ControllerServiceMapper
最新发布
2401_84674171的博客
05-08 552
在Spring Boot项目中,这些层次结构是密切相关的,Controller层作为应用程序的入口点,接收前端请求并调用Service层,Service层处理业务逻辑并调用Mapper层的方法来执行数据库操作。- **Controller层与Service层**:Controller层调用Service层的方法来处理业务逻辑,并将结果传递给前端。- **Service层与Mapper层**:Service层依赖于Mapper层提供的数据持久化操作,通过调用Mapper层的方法来执行数据库操作。
JavaControllerService 、Dao/Mapper层的区别
岚天的博客
10-13 1万+
1、Service层:业务层-->控制业务 业务模块的逻辑功能设计,和DAO层一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联。接下来就可以在service层调用接口进行业务逻辑应用的处理。 好处:封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。 2、Controller层:控制层-->调用业务层方法来控制业务逻辑 controller层主要调用Service层里面的接口来控制具体的业务流程,控制层的配置也要在配置文件中进行。 Control
JAVA框架的层级和各层理解 controllerservice,dao,mapper,model等层和项目中各种包的作用
m0_62314761的博客
10-14 9775
注意:Conroller层和Service层的区别是:Controlle层负责具体的业务模块流程的控制;业务层,通常是调用数据层的接口,组织业务逻辑功能,根据业务需求对数据层发起调用。resource包下的config包通常存放jdbc数据源和连接池的连接信息,还有日志配置等。java包下的config包是通常存放mybatis的拦截器;表现层,通常是要调用service层中的接口,实现接口的方法。持久层,通常放置是放执行sql语句的接口类,和数据库打交到。存放一些前端页面实现的ui和插件。
三层架构编程、DAO层、Entity层、Service层、Controller
m0_57954117的博客
04-18 2929
本质上所有的项目(应用程序)都是需要和用户交互,然后产生数据,对数据进行处理,最后将数据存储到硬盘这么个过程在编程中,可以将这个过程分一下层次,最初只分两层,用户层和数据层,但是后来人们发现,只分两层的话,这两层之间的耦合程度比较高,在实际运行过程中会造成不必要的麻烦,所以为了分层架构的编程方法实用性更好,抽取出另外一层专门负责处理用户提交的数据,对数据进行判断,验,组装等最后将处理好的数据交给数据层完成存储,这一层被称为业务逻辑层到这里。
DAO层、Service层、mapper层和Controller层的区别
s_ai_yan的博客
07-05 2685
对应的,外界需要完成什么样的业务,就通过Controller去调用不同的Service,需要记住的是Controller只是一个中间者或者转发者,不应该在Controller里暴露Service的业务逻辑,而应该直接转发Service的业务处理结果!Service层是业务逻辑层,在该层进行复杂的业务逻辑处理,对在多个mapper层查到的数据进行组装、处理,然后将结果返回给Controller,因此,一般情况下,一个Controller中可能包括多个Service
controller & service & dao之间的关系
二哈喇子!
06-26 1万+
控制层、业务层、数据访问层之间的关系
代码生成器,自动生成MapperControllerservice文件
05-19
代码生成器,自动生成MapperControllerservice文件
mybatis-plus根据mysql表快速生成controller service mapper entity xml
02-17
mybatis-plus根据mysql表快速生成controller service mapper entity xml
通用Mapper逆向工程代码-自动生成代码,支持mysql和oracle
09-28
资源包详解见文章https://blog.csdn.net/u010785811/article/details/108826257
Java自动生成entity、dao、servicecontroller代码
03-25
Java自动生成entity、dao、servicecontroller代码
mongo-mapper:Java中用于MongoDB的简单POJO编解码器
05-14
mongo-mapper 为MongoDB映射POJO并不容易。 感谢的新编解码器功能。 只需用注释标记您的实体,创建EntityCodec ! 然后使用标准方法从MongoDB存储和访问数据。 为什么是我们呢? 简单易用。 使用标准(MongoDB)...
java层级说明(参考)
Jerry的博客
12-23 3574
我个人的理解是:涉及请求、参数、序列化之类的逻辑可以放在controller。而具体到数据的操作逻辑,也就是增删改查的操作都应该完整封装到service中。一方面是对于事务的要求,比如一个请求过来,后台需要多步增删改查,一般都要求放到一个service方法中也就是同一段事务里。另一方面也是为了提供统一的接口,有的业务除了本地的controller还会需要服务间通信,比如rest api或者rpc什么的,最后他们都应该从同一个service拿到一致的基础数据,然后由各自的controller按各自的需求加工后
Spring Boot项目中的ControllerServiceMapper和Entity层的作用与联系
算命de博客
06-22 1万+
在Spring Boot项目中,常见的四个层次是Controller层、Service层、Mapper层和Entity层。它们各自承担着不同的职责,但彼此之间存在着紧密的联系。本文将详细介绍这四个层次的作用与联系,并提供相关实例来说明它们之间的关系。
Controller 就该这么写
gelald的博客
07-22 1142
从统一返回结构到参数校验再到异常处理等方面改造Controller层,想写出优雅简洁的Controller逻辑,不要错过这篇文章
测试开发-后端开发controller层与service层交互(六)
hnfangh的博客
07-07 1356
后端的controller层与serice 层调用,自动生成swagger接口文档单元测试
SpringBoot 中的mapperservicecontroller,model理解
热门推荐
qq_38973118的博客
05-08 2万+
springboot 只是组装了spring和springmvc。 目录直通车 一、SSM(Spring+SpringMVC+MyBatis)架构 1、 SSM的工作原理 (1) SSM系统架构 (2) SSM程序执行流程 2、 MSCM是什么及其作用 (1) controller (2) model  (3) service (4) mapper 二、 SpringBoot + Myb...
controller,servicemapper关系
09-05
### 回答1: 这三个是在软件开发中常见的三层架构中的组件,controller负责接收用户请求并调用service层进行业务逻辑处理,service层负责处理业务逻辑并调用mapper层进行数据持久化操作,mapper层负责与数据库进行交互,完成数据的增删改查等操作。三者之间的关系是controller调用serviceservice调用mapper。 ### 回答2: 在软件开发中,controllerservicemapper是常用的三个组件。 Controller:控制器,是提供接口给外部系统(如前端或其他系统)调用的组件。它接收外部请求,进行参数校验和解析,调用对应的service进行业务逻辑处理,然后返回处理结果给外部系统。 Service:服务层,是业务逻辑处理的核心组件。它包含了具体的业务实现,负责处理接收到的请求,进行数据操作、计算、逻辑处理等,对外提供高层接口供controller调用。 Mapper:数据访问层,负责数据库的读写操作。它使用ORM(对象关系映射)技术,将数据库的操作封装为对象,在业务层使用,起到将数据库与业务逻辑分离的作用。Mapperservice中被调用,将数据操作的具体实现委托给MyBatis等ORM框架,然后将结果返回给service进行后续处理。 它们之间的关系是这样的:controller负责接收请求和返回响应,它调用service进行业务逻辑处理;service负责具体的业务实现,它通过调用mapper来对数据库进行读写操作;mapper则负责操作数据库,它将数据库操作封装为对象,供service调用。这样设计,能够将不同的职责进行分离,提高代码的可读性和可维护性,同时也便于单元测试和功能扩展。因此,controllerservicemapper是一个典型的三层架构中的核心组件。 ### 回答3: ControllerServiceMapper是在软件开发中常用的三个层次的概念。 Controller层负责接收来自前端的请求,根据具体的业务需求调用相应的Service。它负责将前端请求转发给Service处理,并将处理结果返回给前端。Controller层主要负责请求的分发和响应的处理,起到了用户与后端的桥梁作用。 Service层是业务逻辑的处理层。它接收来自Controller层的请求,根据业务需求调用相应的Mapper层进行数据操作,并将处理结果返回给Controller层。Service层主要负责事务控制、业务逻辑处理以及调用其他的外部服务和组件,起到了业务流程控制的作用。 Mapper层是数据访问层,负责与数据库进行交互。Mapper层主要负责封装了与数据库的交互细节,包括数据库的增删改查等操作。它提供了与数据库之间的链接,屏蔽了底层数据库操作的细节,将数据库操作抽象为一系列的接口供Service层调用。 ControllerService是紧密相关的,Controller层调用Service层来处理具体的业务逻辑。Service层依赖于Mapper层来进行数据库操作,通过调用Mapper层提供的接口来实现对数据库的增删改查。 总结而言,Controller层负责接收和响应前端请求,Service层负责业务逻辑处理,Mapper层负责与数据库交互。Controller层调用Service层来处理业务逻辑,Service层依赖于Mapper层来进行数据库操作,通过接口来实现数据的增删改查。他们之间形成了一种层次化的关系,实现了业务逻辑的分离和数据访问的封装。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Java--Stream流详解 77178
  • Java--Java版本和JDK版本 60062
  • 时序数据库-TDengine涛思(taos)使用以及踩坑 45584
  • JavaScript-函数报Uncaught ReferenceError: XX is not defined 43313
  • iOS开发Provisioning profile "iOS Team Provisioning Profile:xxx" doesn't include signing certificate 42653

分类专栏

  • 技术方案 付费 1篇
  • JavaSE 154篇
  • JavaEE 148篇
  • 数据库DataBase 42篇
  • 开发工具 | 插件 2篇
  • Java多线程;JUC 18篇
  • JVM 10篇
  • Spring家族 40篇
  • SpringBoot 33篇
  • SpringCloud 52篇
  • 微信;小程序 4篇
  • Maven 9篇
  • Redis 10篇
  • Elasticsearch 18篇
  • 数据结构与算法
  • Dubbo 3篇
  • Nginx 4篇
  • 消息队列msgqueue(MQ) 8篇
  • 注册中心 11篇
  • Web前端 31篇
  • iOS-OC 605篇
  • iOS-Swift 47篇
  • MacOS 16篇
  • Linux 4篇
  • 时序数据库 1篇
  • Docker 12篇
  • Kubernetes(K8S) 5篇
  • 网络编程 5篇
  • JavaScript 6篇
  • Flutter 1篇
  • RAC 5篇
  • Git 8篇
  • 运维 4篇
  • 编程语言(内存、思想) 6篇
  • 操作系统 1篇
  • 互联网IT发展趋势 2篇

最新评论

  • Java--Stream流详解

    新年711: 博主写的真的太棒啦!!!!

  • Linux - Linux下Java安装路径查找;配置Java环境变量

    敲键盘的小夜猫: 这篇博客真是写得太棒了!让读者能够从中获取丰富的知识和灵感。 【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • Java - LambdaQueryWrapper 的常用方法

    冬天vs不冷: 文章构思巧妙,结构紧凑,既有深度又有广度,读后让人受益匪浅,确实是一篇值得一读的佳作,期盼博主能够光顾我的博客,给予宝贵的指导!

  • MyBatis - 批量更新(update foreach)报错

    脑阔: 亲测试有效,太玄学了

  • IDEA - 最全实用插件与使用

    2201_75400185: 【案例3-1] 基于控制台的购书系统 黑马程序员 www.itheima.com 传智教育旗下 高端IT教育品牌 本案例要求,使用所学知识编写一个基于控制台的购书系统,实现购书功能。程序输出所有图书的信息,包括每本书的编号、书名、单价、库存。 顾客购书时,根据提示输入图书编号选购需要的书,并根据提示输入购买书的的数量。购买完毕后输出顾客的订单信息,包括订单号、订单明细、订单总额。

大家在看

  • 2毛钱的SOT23-5封装单运放LMV321支持轨到轨输出 679
  • ROS 1的相机驱动代码迁移到ROS 2的方法 236
  • 基于SpringBoot+Vue+uniapp的酒店预订管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
  • 赶紧收藏!2024 年最常见 20道设计模式面试题(三)
  • 心跳机制讲解及实例

最新文章

  • Java - List排序
  • Java - List集合与Array数组的相互转换
  • Java - @JSONField和@JsonProperty注解
2024年6篇
2023年41篇
2022年218篇
2021年157篇
2020年67篇
2019年73篇
2018年89篇
2017年296篇
2016年274篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

两个鬼故事宁夏简称公司起名同名不同行业可以吗樱花动漫官方网站宿起名变色龙为什么会变色海贼王免费观看樱花动漫小姨子云开雾散什么意思小吃店起名字有财气的3字公司起名大全免费6月30毕氏男孩起名的李姓怎么起名机械类公司起什么名好道琼斯期货实时行情孟美岐个人资料介绍toyrus起名字女孩2018梓和什么字搭配起名字公司起名有火和土的冬冬食品加盟农业商标起名大全快穿100式狗不理包子黑莲花女配重生了奔驰故宫足球分析www.txtbook.com经典语句给姓张取名起名大全少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化