源起于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的命名规则相关推荐

  1. java单线程循环调度_Java基础篇之Java线程模型

    原标题:Java基础篇之Java线程模型 Java运行系统在很多方面依赖于线程,所有的类库设计都考虑到多线程.实际上,Java使用线程来使整个环境异步.这有利于通过防止CPU循环的浪费来减少无效部分. ...

  2. java 线程模型_Java基础篇之Java线程模型

    Java运行系统在很多方面依赖于线程,所有的类库设计都考虑到多线程.实际上,Java使用线程来使整个环境异步.这有利于通过防止CPU循环的浪费来减少无效部分. 为更好的理解多线程环境的优势可以将它与它 ...

  3. java getinstance 反射_Java 基础篇之反射

    使用反射获取程序运行时的对象和类的真实信息. 获取 Class 对象 每个类被加载之后,系统会为该类生成一个对应的 Class 对象,通过该 Class 对象可以访问到 JVM 中的这个类. 使用 C ...

  4. Java学习---Day16_IO流基础篇

    Java学习-Day16_IO流基础篇 文件操作 操作磁盘上的某一个文件或某一个文件夹,可以对他们进行创建或删除.移动.属性获取.属性设置等操作.但是,不包含读取文件的内容.拷贝文件 ps:java中 ...

  5. invader的java学习第二天基础篇

    invader的java学习第二天基础篇 一.深入了解第一个Hello World程序 public class Hello World{ public static void main(String ...

  6. Java程序设计语言(基础篇)机械工业出版社 原属第10版

    链接:https://pan.baidu.com/s/1txoB3sk0SdT1u8RpS2x-Kg  提取码:rxkd  Java程序设计语言(基础篇)机械工业出版社 原属第10版 外加一本Java ...

  7. [转载] JAVA语言程序设计(基础篇)第十版课后题答案(第一章)

    参考链接: Java中的Scanner和nextChar() JAVA语言程序设计(基础篇)第十版课后题答案 第一章 第二题 /** Created by ysy on 2018/7/6. */ pu ...

  8. java语言程序设计基础篇课后答案_《Java语言程序设计:基础篇》课后复习题答案-第十五章.pdf...

    <Java语言程序设计:基础篇>课后复习题答案-第十五章 Chapter15Graphics 1. Theycoordinateshouldincreaseandthexcoordinat ...

  9. Java学习笔记之基础篇

    Java学习笔记之基础篇 目录 Java如何体现平台的无关性? 面向对象(OO)的理解 面向对象和面向过程编程的区别 面向对象三大特征 静态绑定和动态绑定(后期绑定) 延伸:类之间的关系 组合(聚合) ...

最新文章

  1. 设置IIS缓存的方法
  2. Provisioning profile XXXX can't be found
  3. 想和高手侃侃而谈C++引用?看这一篇就够了【C++引用】
  4. 【Python】55个案例:吃透Python字符串格式化
  5. vuedraggable自由拖拽html,vue中draggable拖拽列表的使用
  6. linux i2c编程
  7. hdu 3966(树链剖分+线段树区间更新)
  8. 【PostgreSQL-9.6.3】数据库的启动、登录、退出、关闭
  9. LINUX SHELL判断文件、目录是否存在
  10. 一文解析SQLServer数据库
  11. 马尔科夫模型系列文章(二)——隐马尔科夫模型
  12. Hacker Rank 上的 Even Tree 小议
  13. 云骞开源即时通讯软件 WEBIM
  14. 修改elementUI中分页器的背景色
  15. rsyslogd(开机或大量消息)消息丢失速率限制[internal_messages]: 569 messages lost due to rate-limiting
  16. python埃及分数_送你一份低折扣书单,Python就占了6本,人工智能2本
  17. 【电子产品】kindle使用心得.满满干货
  18. Vue3 到底哪里好?和React Hook对比有啥有优势?本文详解
  19. Report (enovia) 开发实践档案——PP Cost Book Report
  20. 在h文件中函定义+ #pragma once 是什么意思?

热门文章

  1. 黄金点游戏之客户端(homework-05)
  2. 超简单的话解释C#事件-源码示例
  3. 蓝桥杯入门 (二)
  4. scapy on openwrt
  5. 扫描项目里没有使用的图片mac工具,删除没有使用的图片以减小包的体积
  6. centos下添加的端口不能访问(防火墙关闭)
  7. JDK自带线程池介绍及使用环境
  8. C语言程序设计之最大公约数与最小公倍数算法
  9. 英特尔更新人工智能产品线,新品性能达到竞品6倍
  10. 深度学习系列之CNN核心内容