共计 1666 个字符,预计需要花费 5 分钟才能阅读完成。
菜鸟一枚,进公司看见一堆这个 O 那个 O,一脸懵,而后搜寻了下,在此记录下。
概念及了解
这些概念用于形容对象的类型;因为 java 是面向对象的语言;程序的世界就是各个对象之间的“交互”;在交互的工程中会存在多个档次,每个档次中所领有(关注)的内容都是不一样的;
PO(Persistant Object) 长久对象
用于示意数据库中的一条记录映射成的 java 对象。PO 仅仅用于示意数据,没有任何数据操作。通常恪守 Java Bean 的标准,领有 getter/setter 办法。
能够了解是一个 PO 就是数据库中的一条记录;能够了解某个事务依赖的原始数据;益处是能够将一条记录最为一个对象解决,能够不便转化为其余对象
BO(Business Object) 业务对象
封装对象、简单对象,外面可能蕴含多个类。
次要作用是把 业务逻辑封装为一个对象。这个对象能够包含一个或多个其它的对象
。
用于示意一个业务对象。BO 包含了业务逻辑,经常封装了对 DAO、RPC 等的调用,能够进行 PO 与 VO/DTO 之间的转换。BO 通常位于业务层,要区别于间接对外提供服务的服务层:BO 提供了根本业务单元的根本业务操作,在设计上属于被服务层业务流程调用的对象,一个业务流程可能须要调用多个 BO 来实现。
比方一个简历,有教育经验、工作经验、社会关系等等。
咱们能够把教育经验对应一个 PO,工作经验对应一个 PO,社会关系对应一个 PO。
建设一个对应简历的 BO 对象解决简历,每个 BO 蕴含这些 PO。
这样解决业务逻辑时,咱们就能够针对 BO 去解决。
VO(Value Object) 表现对象
前端界面展现;value object 值对象;ViewObject 体现层对象;次要对应界面显示的数据对象。对于一个 WEB 页面,或者 SWT、SWING 的一个界面,用一个 VO 对象对应整个界面的值;对于 Android 而言即是 activity 或 view 中的数据元素。
用于示意一个与前端进行交互的 java 对象。有的敌人兴许有疑难,这里可不可以应用 PO 传递数据?实际上,这里的 VO 只蕴含前端须要展现的数据即可,对于前端不须要的数据,比方数据创立和批改的工夫等字段,出于缩小传输数据量大小和爱护数据库构造不外泄的目标,不应该在 VO 中体现进去。通常恪守 Java Bean 的标准,领有 getter/setter 办法。
DTO(Data Transfer Object) 数据传输对象
前端调用时传输;也可了解成“下层”调用时传输;
比方咱们一张表有 100 个字段,那么对应的 PO 就有 100 个属性。然而咱们界面上只有显示 10 个字段,客户端用 WEB service 来获取数据,没有必要把整个 PO 对象传递到客户端,这时咱们就能够用只有这 10 个属性的 DTO 来传递后果到客户端,这样也不会裸露服务端表构造. 达到客户端当前,如果用这个对象来对应界面显示,那此时它的身份就转为 VO.
用于示意一个数据传输对象。DTO 通常用于不同服务或服务不同分层之间的数据传输。DTO 与 VO 概念类似,并且通常状况下字段也基本一致。但 DTO 与 VO 又有一些不同,这个不同次要是设计理念上的,比方 API 服务须要应用的 DTO 就可能与 VO 存在差别。通常恪守 Java Bean 的标准,领有 getter/setter 办法
DAO(Data access object) 数据拜访对象
这个大家最相熟,和下面几个 O 区别最大,根本没有互相转化的可能性和必要.,次要用来封装对数据库的拜访。通过它能够把 POJO 长久化为 PO,用 PO 组装进去 VO、DTO;
用于示意一个数据拜访对象。应用 DAO 拜访数据库,包含插入、更新、删除、查问等操作,与 PO 一起应用。DAO 个别在长久层,齐全封装数据库操作,对外裸露的办法使得下层利用不须要关注数据库相干的任何信息。
POJO
POJO(Plain ordinary java object) 简略 java 对象
一个 POJO 长久化当前就是 PO;间接用它传递、传递过程中就是 DTO;间接用来对应表示层就是 VO。
作者:summer_sunrise
原文:https://blog.csdn.net/uestcym…