Java中的PO和VO
首先让我们先来看一下他们的解释:
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相关推荐
- Java 中的 PO、VO、DTO、BO、POJO、BO/DO、DAO
一.简单 Java 对象 1️⃣PO persistent object 持久对象.与数据库里表字段一一对应.PO是一些属性,以及set和get方法组成.一般情况下,一个表对应一个PO,直接与操作数据 ...
- Java语言中po什么意思,java语言:PO,BO,VO和POJO的概念区别
PO:persistent object 持久对象 1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录. 2 .在hibernate持久化框架中与i ...
- 关于java中文件命名POJO/VO/BO/DTO
POJO POJO(Plain Ordinary Java Object),简单的Java对象,名字强调它是一个普通的java对象. POJO只有private属性以及这个属性的public的get和 ...
- springboot中的PO、VO、DAO、BO、DTO、POJO
领域模型命名规约: 数据对象:xxxDO,xxx即为数据表名 数据传输对象:xxxDTO,xxx为业务领域相关的名称. 展示对象:xxxVO,xxx一般为网页名称. POJO是DO/DTO/BO/VO ...
- java中dao和实体类的关系_【JAVA基础】 PO、VO、BO、DTO、POJO、DAO之间的关系详解...
J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的专业术语喷晕了,PO VO BO DTO POJO DAO,一大堆的就来了 首先声明偶也不是什么高手,以 ...
- java中的PO、BO、VO、QO、POJO、DTO、DAO分别代表什么意思
PO: persistant object持久对象 BO: business object业务对象 VO: value object值对象,ViewObject表现层对象 QO: 查询对象 POJO: ...
- Java 中的PO VO DTO BO
PO 持久对象,数据: BO 业务对象,封装对象.复杂对象 ,里面可能包含多个类: DTO 传输对象,前端调用时传输 : VO 表现对象,前端界面展示. 当你业务足够简单时,一个POJO 也完全当做P ...
- java术语(PO/POJO/VO/BO/DAO/DTO)
PO(persistant object) 持久对象 在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据 ...
- Java中的DO,DTO,VO,POJO
DO( Data Object):与数据库表结构一一对应,通过 DAO 层向上传输数据源对象. PO(Persistant Object):持久对象,一个 PO 的数据结构对应着库中表的结构,表中的一 ...
最新文章
- poj3468 A Simple Problem with Integers
- mysql触发器好用吗_为什么大家都不推荐使用MySQL触发器而用存储过程?
- java数据类型常见面试题
- c语言程序设计实验三程序,c语言程序设计实验三循环.doc
- python长代码_Python 的长代码文件怎么组织
- jenkins-系统管理-节点管理进去报错
- MYSQL正式环境主从复制(不锁表,不停服务)
- 关于简历的一点心得(纯属个人想法,非专业人士,欢迎批评指正~)
- 操作系统思考 第五章 更多的位与字节
- RoomIt屏幕画笔工具
- 蛋白工厂(rRNA)和物流系统(tRNA)的识别鉴定-Barrnap,Infernal和tRNA-scan-SE
- java406错误_Springmvc报406错误(Not Acceptable)的有效解决方法
- Linux课程设计每日小结
- mac上安装Enterprise Architect
- excel文件怎么转成vcf_批量excel转vcf格式的方法
- Verilog学习笔记-——Verilog模块例化
- 虚拟语气--专升本语法
- MySQL对时间戳的格式化
- iOS APP 启动页面的使用
- SuperMap GIS的TIN地形数据处理十问
热门文章
- 再次尝试爬取LOL英雄数据--02--Beautiful Soup版
- 【Leetcode 专题五】数组和哈希表
- (四)坦克大战--(2)发射炮弹
- ALV (三)、 Function ALV (工具栏和事件)
- 【语音编码】基于matlab ADPCM编解码(Matlab代码实现)
- 机器学习《西瓜书》9.4解答——k-means算法:编程实现k均值算法,设置三组不同的k值、三组不同初始中心点,在西瓜数据集4.0上进行实验比较,并讨论什么样的初始中心有助于得到好结果。
- 如何挑选合适的服务器
- html音频音量调节
- Cookies 剪影 光照系列7
- Centos8安装CDH解决不兼容问题