博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA中常见对象概念
阅读量:7061 次
发布时间:2019-06-28

本文共 1279 字,大约阅读时间需要 4 分钟。

hot3.png

在JAVA开发过程中经常接触到的几类对象,有:PO,BO,DTO,VO等。

  • PO:Persistant Object(持久对象)

持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应 PO 的一个(或若干个)属性。可以看成是与数据库中的表相映射的 java 对象。一个 PO 就是对应数据库中某个表中的一条记录,含有多个记录时可以用 PO 的集合来表示。 PO 中应该只含有属性与对属性的基础操作 setter/getter 方法。

  • BO:Business Object(业务对象)

主要作用是把业务关联逻辑封装为一个整体对象,这个对象可以包括一个或多个其它的对象。 通过化零为整来反应各对象之间的业务关联关系,比如:一个订单 BO,同时包含有商品信息、卖家信息、买家信息等等。 我们可以把持久层中的多个商品信息对应一个 PO 集合,卖家信息对应一个 PO ,买家信息对应一个 PO 。 建立一个对应订单的 BO 对象用于处理订单流程,每个 BO 包含这些 PO 信息 。 这样处理业务逻辑时,我们就可以针对 BO 整体去处理。

  • DTO:Data Transfer Object(数据传输对象)

指用于视图层与服务层之间的数据传输对象。原来的设计目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式服务间调用的次数,从而提高分布式调用的性能和降低网络负载。但现在多用于指视图层与服务层之间的数据传递。

  • VO:View Object(视图对象)

视图对象,用于视图层,它的用来封装特定视图层中页面(或组件)所需的数据进行统一封装。

除了以上常见对象外,还可能会接触一些其他类型的对象:

  • DO:Domain Object(领域对象)

从现实世界中抽象出来的有形或无形的业务实体,其与 PO 常见区别体现在前者更关注业务抽象,后者更注重持久化需求,导致其并不总是能够一一对应。例如:在学生与老师的业务抽象时对应 studentDO 和 teacherDO 两个对象,而在关系型数据库中由于其两者间多对多的关联关系,除了有对应的 studentPO 和 teacherPO 还会对应一个记录其两者间关联关系的 studentAndTeacherPO 存在,此时则不含有与之对应的 BO 存在。除此以外,还有可能存在将某些一一对应的业务实体(如:客户和联系信息)合并为一个 PO,此时则存在两个 BO 对应一个 PO 的情况。

  • TO:Transfer Object (数据传输对象)

不同服务之间进行数据传输的对象。

POJO:Plain Ordinary Java Object(简单无规则 java 对象)

传统意义的 JAVA 对象,只含有属性与其对应的 setter/getter 方法。PO,BO,DTO 等都可以看做侧重不同角度和不同状态的 POJO。

转载于:https://my.oschina.net/u/1156626/blog/1619925

你可能感兴趣的文章
【斜优DP】bzoj4518-Sdoi2016征途
查看>>
iOS开发网络篇—文件的上传
查看>>
Linode服务器部署docker环境
查看>>
在servlet中注入spring环境
查看>>
Android源代码编译——下载
查看>>
chrome误删书签恢复。
查看>>
类名和字符串之间的转换(实现动态编码)
查看>>
python 之datetime库学习
查看>>
Math.abs为Integer.Min_VALUE返回错误的值
查看>>
做了一个小游戏,结项目,数数坑(animate,移动端长按出现菜单,touchmove,禁止微信上下滑屏)...
查看>>
offsetHeight相关介绍
查看>>
windows使用git记录
查看>>
**CodeIgniter系列 添加filter和helper
查看>>
XSLT比较运算符中,如何使用与?
查看>>
Freedom DownTime
查看>>
matlab进入指定目录
查看>>
three.js
查看>>
关于炉石传说的NGUI问题
查看>>
用 EasyUEFI 在 Win8/10 中硬盘安装 Ubuntu
查看>>
【动态规划】Codeforces Round #392 (Div. 2) D. Ability To Convert
查看>>