什么是PO

PO(Persistence Object 持久化对象)是直接跟持久层数据库打交道的java Bean (model,entity,bean等叫法都是可以的),里面除了私有的成员变量之外,就只有其对应的set/get方法,
而且其变量一般跟数据库表中的列几乎(除了名字)一样。

什么是VO

VO(Value Object 值对象)除了可以跟PO完全一样的变量,set/get方法之外,还可以有其他的变量,但是不用其跟数据库打交道,可以把该对象当做无状态的对象。

为什么要分开使用?

首先PO是持久化类,其属性的改变很有可能直接导致数据库中的数据变化,而不知道原因(为什么我的数据库中的数据变化了?)。引入了VO之后可以很好
的解决类似的问题,甚至会很好的帮你解决页面(JSP,freemarker,asp,aspx)和控制层的直接便利的交互,而不用担心其各种属性的变化会不会导致数据库中
数据的变化,这对于使用hibernate之后控制其操作数据时出现的持久化、瞬态、脱管都是有很大好处的。

使用VO注意的问题

使用VO之后要注意其活动范围要控制在service层、controller层、展现层中,而不要进入dao层甚至是数据库(一般也不可能影响到数据库),同样的PO也
只能出现在dao层和数据库(数据库直接和PO交互),而不能够出现在service层、controller层、展现层中。
所以,PO和VO都会出现在service层,而且也会在service中进行适当转换。

Java 中 PO 与 VO 的区别相关推荐

  1. Java中vo是干什么的_Java 中 PO 与 VO 的区别

    什么是PO PO(Persistence Object 持久化对象)是直接跟持久层数据库打交道的java Bean (model,entity,bean等叫法都是可以的),里面除了私有的成员变量之外, ...

  2. 后端修行 - java中PO、VO、BO、POJO、DAO、DTO、TO、QO的理解

    最近查看公司的项目结构,发现很多以VO.PO.BO命名的类,因对此一概不知,故搜寻多篇博文,静坐半日 → 予以总结并进行记录 前情提要 正文详解 VO O/R Mapper PO VO与PO区别 BO ...

  3. JAVA中PO,BO,VO,DTO,POJO,Entity

    https://my.oschina.net/liaodo/blog/2988512 转载于:https://www.cnblogs.com/dianzan/p/11311217.html

  4. bo dto java vo_java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解

    O/R Mapping 是 Object Relational Mapping (对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据.在 O/R Mapping 的世界里 ...

  5. Java中POJO、VO、DTO、PO、Entity、domain的区别

    Java中POJO.VO.DTO.PO.Entity的区别 在看一些实际的项目的源码的时候,我们会发现POJO.VO.DTO.PO.Entity.domain的区别,那它们分别是什么呢,与我们学习Ja ...

  6. 【面向对象】——JAVA中(PO,VO,TO,BO,DAO,POJO)分别是指什么

    前言 以前在学校学习java的时候,凡是开发项目都会将各个类分门别类的放在不同的包下,其中实体类的包尤为普遍,一般我都是建一个com.xxx.bean的包,然后凡是项目里面用到的实体类都丢进去,大家都 ...

  7. java中的异常种类和区别以及处理机制和区别

    java中的异常种类和区别以及处理机制和区别 按照异常需要处理的时机分为编译时异常(也叫强制性异常)也叫 CheckedException 和运行时异常(也叫非强制性异常)也叫 RuntimeExce ...

  8. java中ArrayList和LinkedList的区别

    首先来看ArrayList和LinkedList的集成类和接口的区别.// lang java public class ArrayList<E> extends AbstractList ...

  9. java中Runnable和Callable的区别

    文章目录 运行机制 返回值的不同 Exception处理 java中Runnable和Callable的区别 在java的多线程开发中Runnable一直以来都是多线程的核心,而Callable是ja ...

最新文章

  1. OpenCV中MeanShift算法视频移动对象分析
  2. entity.Database.SqlQuery() 和entity.Database.SqlCommand()
  3. PHP使用feof()函数读文件的方法
  4. 信息系统项目管理师-项目成本管理考点笔记
  5. java字符串底层实现_「JAVA」细述合理创建字符串,分析字符串的底层存储,你不该错过...
  6. 前端学习(2228):react之状态三
  7. matlab中基于cdma的锁相环,答辩-基于MATLAB的CDMA通信系统设计与仿真.ppt
  8. 【codevs1048】石子归并
  9. Vue源码:抽象语法树
  10. VS2010_x86_编译错误
  11. 2015年硅谷最火技术十问
  12. ps去水印教程_ps怎么去水印?ps去水印的三种方法
  13. 运放参数的详细解释和分析
  14. dell计算机一直重启,为什么电脑老重启
  15. Linux下获取外网IP地址的方法
  16. elasticsearch分片分配和路由配置
  17. CoreDNS 1.9.0 openEuler 21.09 测试报告
  18. actived生命周期_vue组件的生命周期和执行过程
  19. 我们怎样才能过好这一生?
  20. BitLocker驱动器

热门文章

  1. 最近很火的 ClickHouse 是什么?
  2. 真香 | 有了这个神器,学习 Vim 终于不难了!
  3. Eureka 2.0 开源流产,真的对你影响很大吗?
  4. php 自动登录脚本_php利用cookie实现自动登录的方法
  5. flutter listview 滚动到指定位置_flutter入门
  6. 点云三维重建有关原理
  7. 姿态迁移CoCosNet v2
  8. numpy条件筛选的坑
  9. pytorch 忽略层权重
  10. android 隐藏导航栏 虚拟键