对于基于前后台分离的JAVA项目,除了前端展示层页面,很多人都知道conttroller,service,dao三层,大部分都是按照这个方法搭建的。由于人员参差不齐,看到有人将在controler层编写了大量的逻辑代码甚至引用了Dao层的对象,或者controllor层接受JsonObject的对象一股脑的推给service层处理。

下面参考阿里的结构图,给大家介绍一下如何分层,以及各层的领域模型命名方式。

Dao层:是数据交互层,如果是spring boot +mybatis的话,就是指Mapper.java接口和Mapper.xml构成,该层入口为查询参数,如果参数多于三个则增加QUERY对象,输出结果为DO

Manager层:则是对Dao层的加强,依赖于Dao层,但不直接操作数据库,可以通过对Dao层的结果进行组合,生成复杂的对象模型DTO。输入的话也是QUERY。另外Manger层还可以封装对三方平台的封装。

Service层:负责业务模块的逻辑应用设计,这一层还可以封装成RPC服务供三方调用,输出为DO或者DTO

Controllor层:这一层主要是接受外部请求,在restful编程中通常是对外接口,这一层直接和Service层通信,可以有少量的业务逻辑操作。同时具有入参校验,数据对象转换,异常处理的能力。该层输入为Req,输出为VO。

如果对入参对象进行简单的校验的话是可以通过javax.validation来校验。

附录:

领域模型说明

DO(Data Object)与数据库表结构一一对应,通过DAO层向上传输数据源对象。

DTO(Data Transfer Object)数据传输对象,Service或Manager向外传输的对象。

BO(Business Object)业务对象。由Service层输出的封装业务逻辑的对象。

VO(View Object)显示层对象,通常是Web向模板渲染引擎层传输的对象。

Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询需要封装成Query对象

领域模型命名规约

数据对象:xxxDO,xxx即为数据表名。

数据传输对象:xxxDTO,xxx为业务领域相关的名称,这个对象可能是DO的扩展,可以表示部分对象的层级关系。

展示对象:xxxVO,xxx一般为前台调用接口名称,由前台渲染和数据处理。

查询对象:xxxQuery,xxx一般为查询方法名称。

另外我们可以在controller层增加xxxReq ,xxx一般为查询接口名称,作为控制层的入参。

本文相关词条概念解析:

对象

对象原本是一个哲学词语,表示客体事物不以人的意志为转移而又与人的存在相关联的某种规定性。对象从哲学词语变成为一个爱情或与爱情有关的词语,绝对是当代中国人的发明。大约从1950年代开始,由于谈情说爱被视为小资产阶级情调,因而搞对象一词便流行开来,几乎成了谈恋爱的代名词,以其一本正经的事务性和目的性取代了风花雪月的谈恋爱。但它之所以能够大面积地流行开来,恐怕还是与中国人的传统观念和文化心态有关。

java项目 分模块管理_java 工程项目模块划分及各模块功能梳理相关推荐

  1. 计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw ...

  2. 关于Java项目中,word和Excel类型文件的预览功能实现

    关于Java项目中,word和Excel类型文件的预览功能实现 背景 Aspose说明 Aspose.Words Aspose.Cells pom依赖引入 引入license.xml(授权文件) 创建 ...

  3. java 日志管理源码_Java源码初探_logging日志模块实现

    一.用途 程序中记录日志,打印到控制台.文件等方式,记录过程可根据日志级别做筛选,日志格式可以自定义. 大概结构如下所示: 简要说明各个模块: (1) LogManager:管理LoggerConte ...

  4. java电商商品搜索_Java生鲜电商平台-搜索模块的设计与架构

    说明:搜索模块针对的是买家用户,在找菜品找的很费劲下的一种查询方面.目前也是快速的检索商品. 对于移动端的APP买家用户而言,要求的速度在3秒内完成.支持模糊查询,由于业务实战表面,整个搜索频率不到1 ...

  5. Java项目:宠物医院管理系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 功能描叙: 医生信息,客户信息,宠物管理,浏览管理,诊断管理, 医生管理,用户管理等等模块. 二.项目运行 环境配置: Jdk ...

  6. java产品分类和管理_Java生鲜电商平台-商品无限极目录的设计与架构

    Java生鲜电商平台-商品无限极目录的设计与架构 说明:任何一个商品都应该是先属于某一个目录,然后在目录中添加商品,目录理论上最多支持三级,因为级别太多,不容易管理.但是设计中需要设计无限制的级别. ...

  7. java项目逻辑重要吗_JAVA小项目,逻辑+感觉+总结?java小白你做到了吗(源码+教程)...

    俗话说的好,一如JAVA深似海.听起来好像胡说八道,其实却是很实在. 学过java的人都知道,java分支多,知识点十分丰富,单单论基础知识,也够学一壶的了,很多人在学习基础的时候已经被基础知识烦倒, ...

  8. Java项目-博客管理系统介绍

    目录 一,项目背景 二,相关技术准备 1.网络通信三要素 2.Jsp简介 3.Servlet简介 4.Tomcat服务器 三,系统需求分析 1.易用性分析 2.安全性分析 四,数据库设计和实现 1.创 ...

  9. java 项目英语面试问题_Java 英文面试题

    1. Q: What is HashMap and Map? A: Map is Interface and Hashmap is class that implements that. 2. Q: ...

  10. Java项目:旅游网站管理系统设计和实现(java+springboot+jsp+mysql+spring)

    源码获取:博客首页 "资源" 里下载! 运行环境: java jdk 1.8 IDE环境: IDEA tomcat环境: Tomcat 7.x,8.x,9.x版本均可 主要功能说明 ...

最新文章

  1. python学习总目录
  2. 博客园 创始人 杜勇
  3. mysql数据库引擎博客_mysql 数据库引擎常识全集
  4. mysql序列号生成_一文看懂mycat的6种全局序列号实现方式
  5. 408最后计算机网络题库,2021考研计算机统考408专业基础综合题库
  6. Android安全笔记-Broadcast基本概念
  7. 手机/邮箱等帐号判断
  8. Linux查看和注销用户
  9. ubuntu18.04安装roboware-studio
  10. deepfacelab实践笔记
  11. 计算机英语单词怎么巧背,巧计英语单词的26个秘诀
  12. NPOI导出word,NPOI导出word表格,NPOI复制table表格 XWPFDocument中XWPFTable
  13. 一些离谱的文言文翻译
  14. 以太网 以太网地址(MAC地址)
  15. Pj Immediate Decodability
  16. 最新传奇木马及其防范全攻略
  17. 怎么看数据库版本mysql_MySQL数据库之如何查看MySQL的版本?
  18. php云盘搭建,自建云盘之FileRun的搭建与配置
  19. 多期DID-placebo_test
  20. 调试器工作原理之一——基础篇

热门文章

  1. iBase4j部署配置和总结
  2. 关于idea,springboot启动最新版ibase4j报Unable to start ServletWebServerApplicationContext due to missing Serv
  3. android pgis地图,PGIS(警用地图)建设方案详细.doc
  4. python测试app性能_App性能测试
  5. MarkdownPad在win10安装不能预览的问题Awesomium安装
  6. 同态滤波详解(新手入门必看)
  7. Vue SSR服务端渲染 vue预渲染
  8. 【经验分享】优麒麟上的硬盘读写性能测试
  9. Python爬虫教程:网易云音乐歌词
  10. (二)NI采集卡应用学习:使用NI MAX创建测量任务及常见错误