佩服能将复杂难懂的技术,抽象成简单易懂事物的人。java
厌恶将简单易懂的技术,添加一堆专业术语将别人弄的头晕目眩的人。数据库
PO VO BO DTO POJO DAO 整体一览:后端
DAO层对开发人员黑盒,由架构师设计封装。数据结构
在很长一段时间内,我将它理解为对数据库的访问,后面随着项目的积累。架构
发现本身的理解相对狭隘,对数据访问不单单指的是对数据库的访问。框架
假如A系统调用B系统的服务获取数据,这时候A系统对B系统访问数据对象的封装也能够称为DAO。spa
假设数据表中存在20个字段,可是在页面展现列表的时候,这20个字段显然都不会用到。设计
我想对其中的5个字段进行展现,并且这5个字段展现的时候,也并非数据库中他们原有的样子。对象
还须要进行计算、截取、业务代码转名称 .....等等blog
数据传输对象所以而被诞生,一是能提升数据传输的速度,二能隐藏后端表结构。
持久对象属性和数据库中的字段是一一对应的,数据库中的一条数据能够理解为一个持久对象。
因ORM框架的普遍使用而被引入到 JavaEE 项目设计当中。
业务对象顾名思义是在业务处理中抽象出来的对象,里面除了get/set 方法外,也能够有对字段进行业务处理的方法。
假设你要对一个班级进行业务处理,其中的学生、教师、甚至是桌椅板凳都是业务对象的组成部分。
固然其中的学生、教室....均可以是和数据库对应的PO。
值对象也能够称作页面对象,若是称作页面对象,那门它所表明的将是整个页面展现层的对象。
能够由须要的业务对象进行的换算转换而来。
若是称呼他为值对象的话,那门他能够理解为存放业务对象的一个地方。
假设锅碗瓢盆分别为对应的业务对象的话,那门整个碗柜就是一个值对象。
简单java对象应该是JavaEE世界里面最灵活的对象。
在简单系统中,若是从数据库到页面展现都是POJO的话,它能够是DTO。
若是从数据库中到业务处理中都是POJO的话,他也能够是BO。
一样若是从数据库到整个页面的展现的话,它一样能够是VO。
小结:
各个数据对象之间的转换是至关灵活的,在项目中能够定义上述对象的所有和其中的几种类型,这取决与架构师和需求。
在大型项目中,架构师在项目初期的任务除了搭建起整个开发环境之外,定义在系统中流转的数据结构对象一样是重重之重。
这项工做须要许多项目的积累和长期对软件开发的思考,多实践,多思考,提供最合适的数据对象解决方法,方能展示架构师的魅力。