java分层命名_JAVA基础篇(5)-POJO的命名规则
源起于alibaba的开发手册类的命名规范
参考自——知乎上的回答
变脸命名规范
不同类型的对象在架构设计中用于不同的用途,如下的分层架构表示各个POJO的用途。为什么要在分层架构中国,定义这些POJO对象呢?主要是为了确保各个分层能够很好的封装自己的服务,有效控制信息的传播。
试想一下,如果PO和VO没有区别,那么数据库表结构的所有字段就一览无余地展示到前端,不仅给后台安全带来隐患,而且无法在网络传输中剥离冗余信息提高用户的带宽成本。
PO:是Persistant Object(持久化对象)的缩写,用于表示数据库中的一条记录映射成的java对象,PO仅仅用于表示数据,没有任何数据操作。通常遵循Java Bean的规范,拥有getter/setter方法。
DAO:是Data Access Object的缩写,用于表示一个数据访问对象。使用DAO访问数据库,包括增改删查等操作,与PO一起使用。DAO一般在持久层,完全1封装数据库操作,对外暴露的方法使得上层应用不需要关注数据库相关的任何信息。
VO:(本质上是Controller和View层交互)是View Object的缩写,用于一个与前端进行交互的对象。那可以使用PO传递数据吗?实际上,这里的VO只包含前端需要展示的数据即可,对于前端不需要的数据,比如数据库创建和修改的时间等字段,出于减少传输数据量大小和保护数据库结构不外泄的目的,不应该在VO中体现出来,通常遵守Java Bean规范,拥有getter/setter方法。
DTO:(本质是经过处理的PO对象,可能增加或减少PO的属性)是Data Transfer Object的缩写,用于表示一个数据传输对象。DTO通常用于不同服务或服务不同分层之间的数据传输。,DTO和VO概念相似,并且通常情况下字段也基本一致。但是DTO和VO又有一些不同,这个不同是设计理念上的。(敲黑板,划重点)DTO代表服务层需要接收的数据和返回的数据,而VO代表展示层需要显示的数据。DTO通常遵循Java Bean的规范,拥有getter/setter方法。
BO:是Business Object(业务对象)的缩写,将业务逻辑封装为一个对象,这个对象包括一个或者多个其他的对象。比如一个简历,有教育经历、工作经历、社会关系等等。 我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。建立一个对应简历的BO对象处理简历,每个BO包含这些PO。 这样处理业务逻辑时,我们就可以针对BO去处理。
POJO:是Plain Ordinary Java Object(普通java对象)的缩写,表示一个简单的java对象,上面说的PO、VO、DTO、BO都是典型的POJO,而DAO一般不是POJO,只提供一些调用方法。
java分层命名_JAVA基础篇(5)-POJO的命名规则相关推荐
- java单线程循环调度_Java基础篇之Java线程模型
原标题:Java基础篇之Java线程模型 Java运行系统在很多方面依赖于线程,所有的类库设计都考虑到多线程.实际上,Java使用线程来使整个环境异步.这有利于通过防止CPU循环的浪费来减少无效部分. ...
- java 线程模型_Java基础篇之Java线程模型
Java运行系统在很多方面依赖于线程,所有的类库设计都考虑到多线程.实际上,Java使用线程来使整个环境异步.这有利于通过防止CPU循环的浪费来减少无效部分. 为更好的理解多线程环境的优势可以将它与它 ...
- java getinstance 反射_Java 基础篇之反射
使用反射获取程序运行时的对象和类的真实信息. 获取 Class 对象 每个类被加载之后,系统会为该类生成一个对应的 Class 对象,通过该 Class 对象可以访问到 JVM 中的这个类. 使用 C ...
- Java学习---Day16_IO流基础篇
Java学习-Day16_IO流基础篇 文件操作 操作磁盘上的某一个文件或某一个文件夹,可以对他们进行创建或删除.移动.属性获取.属性设置等操作.但是,不包含读取文件的内容.拷贝文件 ps:java中 ...
- invader的java学习第二天基础篇
invader的java学习第二天基础篇 一.深入了解第一个Hello World程序 public class Hello World{ public static void main(String ...
- Java程序设计语言(基础篇)机械工业出版社 原属第10版
链接:https://pan.baidu.com/s/1txoB3sk0SdT1u8RpS2x-Kg 提取码:rxkd Java程序设计语言(基础篇)机械工业出版社 原属第10版 外加一本Java ...
- [转载] JAVA语言程序设计(基础篇)第十版课后题答案(第一章)
参考链接: Java中的Scanner和nextChar() JAVA语言程序设计(基础篇)第十版课后题答案 第一章 第二题 /** Created by ysy on 2018/7/6. */ pu ...
- java语言程序设计基础篇课后答案_《Java语言程序设计:基础篇》课后复习题答案-第十五章.pdf...
<Java语言程序设计:基础篇>课后复习题答案-第十五章 Chapter15Graphics 1. Theycoordinateshouldincreaseandthexcoordinat ...
- Java学习笔记之基础篇
Java学习笔记之基础篇 目录 Java如何体现平台的无关性? 面向对象(OO)的理解 面向对象和面向过程编程的区别 面向对象三大特征 静态绑定和动态绑定(后期绑定) 延伸:类之间的关系 组合(聚合) ...
最新文章
- 设置IIS缓存的方法
- Provisioning profile XXXX can't be found
- 想和高手侃侃而谈C++引用?看这一篇就够了【C++引用】
- 【Python】55个案例:吃透Python字符串格式化
- vuedraggable自由拖拽html,vue中draggable拖拽列表的使用
- linux i2c编程
- hdu 3966(树链剖分+线段树区间更新)
- 【PostgreSQL-9.6.3】数据库的启动、登录、退出、关闭
- LINUX SHELL判断文件、目录是否存在
- 一文解析SQLServer数据库
- 马尔科夫模型系列文章(二)——隐马尔科夫模型
- Hacker Rank 上的 Even Tree 小议
- 云骞开源即时通讯软件 WEBIM
- 修改elementUI中分页器的背景色
- rsyslogd(开机或大量消息)消息丢失速率限制[internal_messages]: 569 messages lost due to rate-limiting
- python埃及分数_送你一份低折扣书单,Python就占了6本,人工智能2本
- 【电子产品】kindle使用心得.满满干货
- Vue3 到底哪里好?和React Hook对比有啥有优势?本文详解
- Report (enovia) 开发实践档案——PP Cost Book Report
- 在h文件中函定义+ #pragma once 是什么意思?