前段时间从同事处听到了许多带O的Java相关词汇,一时间有点懵逼;回去谷歌整理理解后,记录下来,便于查阅。
参考的文章如下:
主要记录以下几个,希望对大家有帮助
- POJO => 简单的Java对象
- PO =>持久对象,数据
- DAO
- VO => 值对象/ view object表现层对象,前端界面展示
- DTO => 传输对象,前端调用时传输
- BO => 业务对象,封装对象、复杂对象 ,里面可能包含多个类
POJO
POJO, or Plain Old Java Object, is a normal Java object class (that is, not a JavaBean, EntityBean etc.) and does not serve any other special role nor does it implement any special interfaces of any of the Java frameworks. This term was coined by Martin Fowler, Rebbecca Parsons and Josh MacKenzie who believed that by creating the acronym POJO, such objects would have a "fancy name", thereby convincing people that they were worthy of use.
总结一下,POJO就是简单的Java对象,他不具有任何特殊角色、不继承或不实现任何其他Java框架的类接口
上面说的 PO、VO、DTO 都是典型的 POJO。而 DAO、BO 一般都不是 POJO,只提供一些调用方法。
PO
PO 是 Persistant Object 的缩写,用于表示数据库中的一条记录映射成的 java 对象。PO 仅仅用于表示数据,没有任何数据操作。
DAO
DAO 是 Data Access Object 的缩写,用于表示一个数据访问对象。使用 DAO 访问数据库,包括插入、更新、删除、查询等操作,与 PO 一起使用。DAO 一般在持久层,完全封装数据库操作,对外暴露的方法使得上层应用不需要关注数据库相关的任何信息。
VO
VO 是 Value Object 的缩写,用于表示一个与前端进行交互的 java 对象。VO 只包含前端需要展示的数据即可。
DTO
DTO 是 Data Transfer Object 的缩写,用于表示一个数据传输对象。DTO 通常用于不同服务或服务不同分层之间的数据传输。
DTO 与 VO 概念相似,并且通常情况下字段也基本一致。但 DTO 与 VO 又有一些不同,这个不同主要是设计理念上的,比如 API 服务需要使用的 DTO 就可能与 VO 存在差异。
BO
BO 是 Business Object 的缩写,用于表示一个业务对象。BO 包括了业务逻辑,常常封装了对 DAO、RPC 等的调用,可以进行 PO 与 VO/DTO 之间的转换。BO 通常位于业务层,要区别于直接对外提供服务的服务层:BO 提供了基本业务单元的基本业务操作,在设计上属于被服务层业务流程调用的对象,一个业务流程可能需要调用多个 BO 来完成。