前言
一些Java常见Object简称解读。
VO、PO、BO、TO、DAO、DTO
Data Access Object(DAO)
数据访问对象,是sun的一个标准j2ee设计模式,此对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法,夹在业务逻辑与数据库操作中间的操作层。
Persistant Object(PO)
PO可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。 好处就是可以把一条记录作为一个对象处理,可以方便的转为其他对象。
PO由一组属性和属性的get和set方法组成,这些属性是跟数据库表的字段一一对应的。PO对象需要实现序列化接口,它们在向数据库中添加新数据时被创建,删除数据库中数据时削除。并且PO只能存活在一个数据库连接中,断开连接就被销毁。
PO是有状态的,每个属性代表其当前的状态,他是物理数据的对象表示。使用它,可以使我们的程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换。
Business Object(BO)
业务对象,封装业务相关内容的java对象,其内容既可以只包含业务对象属性,也可以只包含业务方法,或是全包含。
一种常见的模式是把BO的信息在PO信息的基础上进行扩充,可以理解为多个PO对象的信息按照业务流程必要的拼凑在一起形成的对象。
Data Transfer Object(DTO)
数据传输对象主要用于需要大量传输对象的地方,在已有数据基础上进行过滤筛选。 比如说,我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构。到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。
DTO是一组需要跨进程或网络边界传输的聚合数据的简单容器。它不应该包含业务逻辑,也不应该将其行为限制为诸如内部一致性检查和基本验证之类的活动。
Value Object(VO)
值对象,通常用于业务层之间(前后端之间)的数据传递,仅包含数据。可以理解为展示要用的数据,传递到前端页面上,直接进行展示。
层级关系
一种常见的各对象间的层级关系如下图所示,但最终还是要回归于业务,根据业务对数据处理流程进行缩减或扩充。
参考
[1] https://blog.csdn.net/weixin_42501850/article/details/114309927
[2] https://blog.csdn.net/weixin_33038783/article/details/114603926
后记
首发于 silencezheng.top,转载请注明出处。