首先让我们先来看一下他们的解释:

PO是Persistent Object的英文缩写,意思是持久对象,而VO是Value Object的缩写,意思是值对象。他们两个都存在于ORM(对象关系映射)的世界里。它们都是由一组属性和属性的get和set方法组成。从结构上看,它们并没有什么不同的地方。但从其意义和本质上来看是完全不同的。

下面我们从三个方面来看一下他们的不同之处:
1.VO是用new关键字创建的,由GC负责回收。 
   PO则是向数据库中添加新数据时创建,删除数据库中数据时销毁的。并且它只能存活在一个数据库连接中,断开连接即被销毁。

2.VO是值对象,精确点讲它是业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是为数据提供一个生存的地方。 
   PO则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使我们的程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换。

3.VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。 
   PO的属性是跟数据库表的字段一一对应的。

总之,它们的关系应该是相互独立的,一个VO可以只是PO的一部分,也可以由多个PO构成,同样也可以等同于一个PO(当然这里是指他们的属性)。正因为这样,PO就独立出来,数据持久层也就独立出来了,它不会受到任何业务的干涉。又正因为这样,业务逻辑层也独立出来了,它不会受到数据持久层的影响,业务层关心的只是业务逻辑的理,至于怎么存怎么读交给别人吧!不过,另外一点,如果我们没有使用数据持久层,或者说没有使用hibernate,那么PO和VO也可以是同一个东西,虽然这并不好。

Java中的PO和VO相关推荐

  1. Java 中的 PO、VO、DTO、BO、POJO、BO/DO、DAO

    一.简单 Java 对象 1️⃣PO persistent object 持久对象.与数据库里表字段一一对应.PO是一些属性,以及set和get方法组成.一般情况下,一个表对应一个PO,直接与操作数据 ...

  2. Java语言中po什么意思,java语言:PO,BO,VO和POJO的概念区别

    PO:persistent object 持久对象 1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录. 2 .在hibernate持久化框架中与i ...

  3. 关于java中文件命名POJO/VO/BO/DTO

    POJO POJO(Plain Ordinary Java Object),简单的Java对象,名字强调它是一个普通的java对象. POJO只有private属性以及这个属性的public的get和 ...

  4. springboot中的PO、VO、DAO、BO、DTO、POJO

    领域模型命名规约: 数据对象:xxxDO,xxx即为数据表名 数据传输对象:xxxDTO,xxx为业务领域相关的名称. 展示对象:xxxVO,xxx一般为网页名称. POJO是DO/DTO/BO/VO ...

  5. java中dao和实体类的关系_【JAVA基础】 PO、VO、BO、DTO、POJO、DAO之间的关系详解...

    J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的专业术语喷晕了,PO VO BO DTO POJO DAO,一大堆的就来了 首先声明偶也不是什么高手,以 ...

  6. java中的PO、BO、VO、QO、POJO、DTO、DAO分别代表什么意思

    PO: persistant object持久对象 BO: business object业务对象 VO: value object值对象,ViewObject表现层对象 QO: 查询对象 POJO: ...

  7. Java 中的PO VO DTO BO

    PO 持久对象,数据: BO 业务对象,封装对象.复杂对象 ,里面可能包含多个类: DTO 传输对象,前端调用时传输 : VO 表现对象,前端界面展示. 当你业务足够简单时,一个POJO 也完全当做P ...

  8. java术语(PO/POJO/VO/BO/DAO/DTO)

    PO(persistant object) 持久对象 在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据 ...

  9. Java中的DO,DTO,VO,POJO

    DO( Data Object):与数据库表结构一一对应,通过 DAO 层向上传输数据源对象. PO(Persistant Object):持久对象,一个 PO 的数据结构对应着库中表的结构,表中的一 ...

最新文章

  1. poj3468 A Simple Problem with Integers
  2. mysql触发器好用吗_为什么大家都不推荐使用MySQL触发器而用存储过程?
  3. java数据类型常见面试题
  4. c语言程序设计实验三程序,c语言程序设计实验三循环.doc
  5. python长代码_Python 的长代码文件怎么组织
  6. jenkins-系统管理-节点管理进去报错
  7. MYSQL正式环境主从复制(不锁表,不停服务)
  8. 关于简历的一点心得(纯属个人想法,非专业人士,欢迎批评指正~)
  9. 操作系统思考 第五章 更多的位与字节
  10. RoomIt屏幕画笔工具
  11. 蛋白工厂(rRNA)和物流系统(tRNA)的识别鉴定-Barrnap,Infernal和tRNA-scan-SE
  12. java406错误_Springmvc报406错误(Not Acceptable)的有效解决方法
  13. Linux课程设计每日小结
  14. mac上安装Enterprise Architect
  15. excel文件怎么转成vcf_批量excel转vcf格式的方法
  16. Verilog学习笔记-——Verilog模块例化
  17. 虚拟语气--专升本语法
  18. MySQL对时间戳的格式化
  19. iOS APP 启动页面的使用
  20. SuperMap GIS的TIN地形数据处理十问

热门文章

  1. 再次尝试爬取LOL英雄数据--02--Beautiful Soup版
  2. 【Leetcode 专题五】数组和哈希表
  3. (四)坦克大战--(2)发射炮弹
  4. ALV (三)、 Function ALV (工具栏和事件)
  5. 【语音编码】基于matlab ADPCM编解码(Matlab代码实现)
  6. 机器学习《西瓜书》9.4解答——k-means算法:编程实现k均值算法,设置三组不同的k值、三组不同初始中心点,在西瓜数据集4.0上进行实验比较,并讨论什么样的初始中心有助于得到好结果。
  7. 如何挑选合适的服务器
  8. html音频音量调节
  9. Cookies 剪影 光照系列7
  10. Centos8安装CDH解决不兼容问题