PO

PO(Persistant Object)可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。 好处就是可以把一条记录作为一个对象处理,可以方便的转为其他对象。

PO由一组属性和属性的get和set方法组成。

PO是在向数据库中添加新数据时创建,删除数据库中数据时削除。并且PO只能存活在一个数据库连接中,断开连接就被销毁。

PO是有状态的,每个属性代表其当前的状态,他是物理数据的对象表示。使用它,可以使我们的程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换。

PO属性是跟数据库表的字段一一对应的。PO对象需要实现序列化接口。

VO

value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。

VO由一组属性和属性的get和set方法组成。

VO是用new关键字创建,由GC回收。

VO是值对象,或者说是业务对象,是存活在业务层,是业务逻辑使用的,意义在于为微数据提供一个生存的地方。

VO的属性是根据当前业务的不同而不同,即,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。

DAO

Data Access Object数据访问对象,是sun的一个标准j2ee设计模式 .此对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作。夹在业务逻辑与数据库资源中间。配合VO, 提供数据库的CRUD操作。

BO

BO(Business Object)业务对象,封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。这个对象可以包括一个或多个其它的对象。

比如一个简历,有教育经历、工作经历、 关系等等。我们可以把教育经历对应一个PO,工作经历对应一个PO, 关系对应一个PO。建立一个对应简历的BO对象处理简历,每个BO包含这些PO。这样处理业务逻辑时,我们就可以针对BO去处理。

关于BO主要有三种概念 :只包含业务对象的属性;

只包含业务方法;

两者都包含。

在实际使用中,认为哪一种概念正确并不重要,关键是实际应用中适合自己项目的需要

POJO

POJO(Plain Ordinary Java Object简单无规则java对象)是纯粹的传统意义的java对象。就是说在一些Object Relation Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法,即,最基本的Java Bean,只有属性字段及setter和getter方法!一个POJO持久化以后就是PO;

直接用它传递,传递过程中就是DTO;

直接用来对应表示层就是VO。

DTO

DTO(Data Transfer Object,数据传输对象)主要用于远程调用等需要大量传输对象的地方。 比如说,我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段, 客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端, 这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。 DTO 是一组需要跨进程或网络边界传输的聚合数据的简单容器。它不应该包含业务逻辑,并将其行为限制为诸如内部一致性检查和基本验证之类的活动。注意,不要因实现这些方法而导致 DTO 依赖于任何新类。在设计数据传输对象时,您有两种主要选择:使用一般集合;或使用显式的 getter 和 setter 方法创建自定义对象。

应用

不同类型的对象在架构设计中用于不同的用途,如下的分层架构表示了各个 POJO 的用途。是为了确保各个分层能够很好地封装自己的服务,有效地控制信息的传播,在分层结构中对POJO对象进行定义。

如果没有 VO 和 PO 的区别,那么数据库表结构的所有字段就一览无余地展示到了前端,给后台安全带来很大的隐患,并且无法在网络传输中剥离冗余信息提高了用户的带宽成本实例分析

以一个实例来探讨下 POJO 的使用。假设我们有一个面试系统,数据库中存储了很多面试题,通过 web 和 API 提供服务。可能会做如下的设计:数据表:表中的面试题包括编号、题目、选项、答案、创建时间、修改时间;

PO:包括题目、选项、答案、创建时间、修改时间;

VO:题目、选项、答案、上一题URL、下一题URL;

DTO:编号、题目、选项、答案、上一题编号、下一题编号;

DAO:数据库增删改查方法;

BO:业务基本操作。

可以看到,进行 POJO 划分后,我们得到了一个设计良好的架构,各层数据对象的修改完全可以控制在有限的范围内。参考文献:zhuanlan.zhihu.com/p/42288383

java bo对象_java的几种对象(PO,VO,DAO,BO,POJO,DTO)解释相关推荐

  1. java的几种对象(PO,VO,DAO,BO,POJO)解释

    本文转自: http://blog.csdn.net/bzhxuexi/article/details/8227808 Java的几种对象(PO,VO,DAO,BO,POJO)解释   一.PO:pe ...

  2. java的几种对象(PO,VO,DAO,BO,POJO)解释(转)

      [ 作者:赵小刀 ][ 大小:1k ][ 发布日期:2005-08-22 ][ 浏览:8678 ]      java的几种对象(PO,VO,DAO,BO,POJO)解释      一.PO:pe ...

  3. java 数据对象_java的几种对象(PO,VO,DAO,BO,POJO)

    一.PO persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数 ...

  4. java vo对象转bo对象_java的几种对象(PO,VO,DAO,BO,POJO)解释(转)

    PO:persistant object持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合. PO中应该不包含任何对数据库 ...

  5. java领域对象_java的几种对象(po,dto,dao等)

    j2ee中,经常提到几种对象(object),理解他们的含义有助于我们更好的理解面向对象的设计思维. POJO(plain old java object):普通的java对象,有别于特殊的java对 ...

  6. java中的几种对象(PO,VO,DAO,BO,POJO)

    一.PO :(persistant object ),持久对象 可以看成是与数据库中的表相映射的java对象.使用Hibernate来生成PO是不错的选择. 二.VO :(value object) ...

  7. java 的几种对象 (PO,VO,DAO,BO,POJO) 解释

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象 ...

  8. PO,VO,DAO,BO,POJO之间的区别与解释

    VO value object:值对象 通常用于业务层之间的数据传递,由new创建,由GC回收. PO persistant object:持久层对象 对应数据库中表的字段. VO和PO,都是属性加上 ...

  9. 【spring】PO,VO,DAO,BO,POJO,Bean之间的区别与解释

    VO value object:值对象 通常用于业务层之间的数据传递,由new创建,由GC回收. PO persistant object:持久层对象 对应数据库中表的字段. VO和PO,都是属性加上 ...

最新文章

  1. CTO让我研究中台(一):阿里的“数据+业务”双中台架构
  2. 活久见!如何看待北京理工大学某硕士生被指几乎一字不差地抄袭论文?
  3. 再次携号转网_湖北省通信管理局召开视频会议 再次强调携号转网服务要求
  4. java 控制 crt_secureCRT关闭连接自动关闭tomcat服务
  5. 在Websphere 8.0上安装Liferay 6.2 Enterprise Edition
  6. java数组怎么添加元素_Java封装数组之添加元素操作实例分析
  7. heX:用HTML5和Node.JS开发桌面应用
  8. 【二分法】计蒜客:气球消消乐
  9. c语言文件操作常用函数及读写文件代码举列
  10. tp5框架原理详解_笔记:TP5框架完整学习笔记
  11. Java List retainAll 记录坑
  12. 软件测试工程师在不同阶段需要掌握的技能
  13. Triplet-Graph Reasoning Network for few-shot Metal Generic Surface Defect Segmentation论文理解
  14. JPK Data Processing AFM数据处理
  15. 日志php-error错误日志查看
  16. 解决tomcat启动时的45秒时间限制
  17. 接上篇,记录一下【Unity 3D对博途PLCSIM的通讯】文章有点长~仔细看,很基础
  18. unturned服务器重置,服务器配置文件Config.json说明
  19. 当当网高可用架构之道
  20. mysql IP address ‘xxx‘ could not be resolved

热门文章

  1. E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
  2. 【系统分析师之路】第十一章 新技术应用
  3. 如何防止网站被爬虫爬取的几种办法
  4. 快速排序原理解析(简单易懂图文代码配套)
  5. nginx设置超时时间
  6. 【转】木人播放器(同步歌词mp3格式)(需要jmf包)
  7. 基于MATLAB的数值积分问题求解
  8. 营销技术(Martech)的持续爆炸式增长,市场总监的工作变得更加艰难
  9. modelsim的基本使用
  10. Window10家庭版启用远程桌面-RDPWrapper强制开启win10远程桌面