文章目录

  • 前言
  • 工具类层
    • Util
  • 数据层
    • POJO对象
    • domain
    • entity
    • model
    • view
    • DTO
    • 总结
  • 数据访问层
    • DAO
    • mapper
  • 业务层
    • service
  • 控制层
    • Controller

前言

做开发项目时,总会遇到这些包,理清他们的层次,非常有助于我们对于项目的理解和建立。

现阶段CSDN上貌似没有很系统,很详细的关于层级类的解释。因此总结了一下自己的经验和思考,也算是小小的回馈一下一直帮助自己的CSDN。


工具类层

Util

util = 工具

顾明思义,util层就是存放工具类的地方,对于一些独立性很高的小功能,或重复性很高的代码片段,可以提取出来放到Util层中。


数据层

POJO对象

POJO = plain ordinary Java object = 普通Java对象

PO:持久对象,与数据库中的表相映射的Java对象

VO:业务层之间数据传递的对象

POJO:简单无规则Java对象,只有属性+get+set方法

下面要讲的这几个包,本质上都是POJO类


domain

domain = 域

域是一个大范围,如简历域包括工作经验表、项目经验表、简历基本信息表。 在domain包中,就可以定义一个大的简历对象,将三个表的内容整合在一个对象中,作为整体操作。


entity

entity = 实体

严格和数据库相对应,数据库中有什么字段,entity包中的类就有什么字段。因此当操作表时,操作这个类即可。

比如user表中有name、id、age,则entity包中对应的同名类也只有这三个同名属性。


model

Model = 模型

当用model当包名时,一般里面存的是实体类的模型,是用来给后端用的。

比如user表中有name、id、age,出于安全原因,我们需要把用户的密码定义在另一表中,即user_passwd表,但进行相关操作时,我们往往需要将两个表关联使用,每次定义都很麻烦。

因此可以在model层中定义user_model类,将user表中的信息与user_passwd表中的信息整合成一张综合表,这样在进行操作时只需调用综合表,就可以完成对两个表的关联操作


view

view = 视图

当用view当包名时,一般里面存放的是对实体表的映射类(视图类),是用来给前端用的。

即:有时候我们仅仅需要获得某一个表的几个字段,所以此时可以用view存储这几个字段。

比如user表中有name、id、age,出于某些原因,我们只需要向用户展示name和id值,但进行相关操作时,我们往往需要对user表进行很复杂读处理,每次定义都很麻烦。

因此可以在view层中定义user_view类,将user表中的name、id存入user_view视图,这样在进行操作时只需调用视图表,就可以完成相对应的操作


DTO

DTO = Data Transfer Object = 数据传输对象,与view的用法相同,不过是叫法不同


总结

  • 如果想对几个表综合操作,就用domain

  • 如果是严格对数据库表操作,就用entity

  • 如果想显示某个几个表的综合信息,就用model,注意model包一般放在service层。

  • 如果只想展示某个表中的几段信息,就用view,注意view包一般放在controller层

  • 上述包中的类都属于POJO类。


数据访问层

DAO

主要针对于数据表的操作,可以理解为一张数据表,就有一个DAO与之对应,与数据库的操作,增删改查等方法

举例:对于user类,其对应的dao包就是对user表中数据的增删改查方法。


mapper

mapper层 = dao层,若使用mybatis框架,则其生成的类名字是mapper,其实就是dao层。


业务层

service

由于Dao里面存放了对表操作的方法,entity类中存放了映射表的POJO类。

Service的作用就是将Dao和entity类整合起来,进行再次封装,封装成一个方法,我们调用这个方法,就实现了对某个表的增删改查操作。


控制层

Controller

负责请求转发,接受页面传递过来的参数,根据参数的不同,是调用不同的Service层方法进行操作,操作完成后将返回结果传递给页面。


喜欢就点个赞吧!

史上最全总结!Util、POJO、domain、entity、model、DAO、DTO、view、mapper、service、controller的作用和区别分析相关推荐

  1. 2023史上最全Java面试题【完整版】跳槽必备,看完轻松收撕面试官

    ✨作者简介:杨 戬,博客专家.github开源作者 ✨多年工作总结:Java学习路线总结,小白逆袭Java技术总监 ✨技术交流:定期更新Java硬核干货,不定期送书活动.助你实现技术飞跃 ✨关注公众号 ...

  2. 2019史上最全java面试题题库大全800题含答案

    2019史上最全java面试题题库大全800题含答案 1. meta标签的作用是什么 2. ReenTrantLock可重入锁(和synchronized的区别)总结 3. Spring中的自动装配有 ...

  3. 2019史上最全java面试题题库大全800题含答案(面试宝典)

    2019史上最全java面试题题库大全800题含答案(面试宝典) 1. meta标签的作用是什么 2. ReenTrantLock可重入锁(和synchronized的区别)总结 3. Spring中 ...

  4. 2022史上最全java面试题题库大全800题含答案

    2022史上最全java面试题题库大全800题含答案 1. meta标签的作用是什么 2. ReenTrantLock可重入锁(和synchronized的区别)总结 3. Spring中的自动装配有 ...

  5. 史上最全 Java 多线程面试题及答案

    这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题. 这些多线程的问题,有些来源于各大网站.有些来源于自己的思考.可能有些问题网上有.可能有些问题对应的答案也有.也可能有些各位网友也 ...

  6. 史上最全的 MySQL 高性能优化实战总结

    转载自   史上最全的 MySQL 高性能优化实战总结 一.前言 MySQL 对于很多 Linux 从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰.在进行 M ...

  7. Tomcat8史上最全优化实践

    Tomcat8史上最全优化实践 本文链接:https://blog.csdn.net/zhao1299002788/article/details/95191221 Tomcat8史上最全优化实践 1 ...

  8. itext 添加空格_itext7史上最全实战总结

    1. itext7史上最全实战总结 1.1. 前言 最近有个需求需要我用Java手动写一份PDF报告,经过考察几种pdf开源代码,最终选取了itext7,此版本为7.1.11,由于发现网上关于该工具的 ...

  9. 史上最全设计模式——原型模式

    2019独角兽企业重金招聘Python工程师标准>>> 参考: 1.史上最全设计模式 2.https://www.cnblogs.com/zhangtianq/p/6006120.h ...

最新文章

  1. 拜托别在问我 MySQL 性能优化了!
  2. 重学hadoop技术
  3. Django分页的基本实现办法
  4. c.kdocs cn二维码_二维码防窜货解决方案,物流动向尽在掌握
  5. Linux 查找redis进程命令:ps -ef | grep redis
  6. Java技术分享:小白如何入门Mybatis?
  7. python内建时间模块 time和datetime
  8. [转]Linux下显示硬件信息--lshw
  9. Ansible 学习总结(2)—— Ansible playbook 入门详解
  10. 485通讯线是几芯的_RS485协议 电脑与stm32单片机通信 keil编程 在485的硬件错误中徘徊...
  11. 三江学院计算机答辩严格,三江学院论文答辩
  12. Java之美[从蛮荒到撬动地球]之设计模式二
  13. 创业者该如何给员工画饼、圆饼?
  14. 计算机演示文稿步骤,计算机二级Msoffice演示文稿(解题步骤)总结.doc
  15. 乐视x820android最新版本,乐视MAX2|MIUI10|安卓8.1|最终完美版极速流_最新最全的乐Max2ROM刷机包下载、刷机教程...
  16. 一些好用的手机软件分享
  17. Vue 记账凭证模块组件
  18. Win11 PS2022 打开文件闪退
  19. 带你聊聊邮件系统的前世今生......
  20. 国外投资哪些域名比较受欢迎?

热门文章

  1. Android 图形架构
  2. 经典|Linux:为什么性能工具需要 BPF 技术(送多本)
  3. 设计模式:享元模式(Flyweight)
  4. 音视频技术开发周刊 | 133
  5. 周昌印:忘记技术 从用户与市场考虑问题
  6. AV1挑起的Codec之战
  7. 设计模式C++实现(4)——桥接模式
  8. 剑指offer之26-30题解
  9. 如何在IDEA中使用git
  10. 腾讯重磅发布全栈机器学习平台Angel 3.0