Java 中 PO 与 VO 的区别
什么是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 的区别相关推荐
- Java中vo是干什么的_Java 中 PO 与 VO 的区别
什么是PO PO(Persistence Object 持久化对象)是直接跟持久层数据库打交道的java Bean (model,entity,bean等叫法都是可以的),里面除了私有的成员变量之外, ...
- 后端修行 - java中PO、VO、BO、POJO、DAO、DTO、TO、QO的理解
最近查看公司的项目结构,发现很多以VO.PO.BO命名的类,因对此一概不知,故搜寻多篇博文,静坐半日 → 予以总结并进行记录 前情提要 正文详解 VO O/R Mapper PO VO与PO区别 BO ...
- JAVA中PO,BO,VO,DTO,POJO,Entity
https://my.oschina.net/liaodo/blog/2988512 转载于:https://www.cnblogs.com/dianzan/p/11311217.html
- bo dto java vo_java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解
O/R Mapping 是 Object Relational Mapping (对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据.在 O/R Mapping 的世界里 ...
- Java中POJO、VO、DTO、PO、Entity、domain的区别
Java中POJO.VO.DTO.PO.Entity的区别 在看一些实际的项目的源码的时候,我们会发现POJO.VO.DTO.PO.Entity.domain的区别,那它们分别是什么呢,与我们学习Ja ...
- 【面向对象】——JAVA中(PO,VO,TO,BO,DAO,POJO)分别是指什么
前言 以前在学校学习java的时候,凡是开发项目都会将各个类分门别类的放在不同的包下,其中实体类的包尤为普遍,一般我都是建一个com.xxx.bean的包,然后凡是项目里面用到的实体类都丢进去,大家都 ...
- java中的异常种类和区别以及处理机制和区别
java中的异常种类和区别以及处理机制和区别 按照异常需要处理的时机分为编译时异常(也叫强制性异常)也叫 CheckedException 和运行时异常(也叫非强制性异常)也叫 RuntimeExce ...
- java中ArrayList和LinkedList的区别
首先来看ArrayList和LinkedList的集成类和接口的区别.// lang java public class ArrayList<E> extends AbstractList ...
- java中Runnable和Callable的区别
文章目录 运行机制 返回值的不同 Exception处理 java中Runnable和Callable的区别 在java的多线程开发中Runnable一直以来都是多线程的核心,而Callable是ja ...
最新文章
- OpenCV中MeanShift算法视频移动对象分析
- entity.Database.SqlQuery() 和entity.Database.SqlCommand()
- PHP使用feof()函数读文件的方法
- 信息系统项目管理师-项目成本管理考点笔记
- java字符串底层实现_「JAVA」细述合理创建字符串,分析字符串的底层存储,你不该错过...
- 前端学习(2228):react之状态三
- matlab中基于cdma的锁相环,答辩-基于MATLAB的CDMA通信系统设计与仿真.ppt
- 【codevs1048】石子归并
- Vue源码:抽象语法树
- VS2010_x86_编译错误
- 2015年硅谷最火技术十问
- ps去水印教程_ps怎么去水印?ps去水印的三种方法
- 运放参数的详细解释和分析
- dell计算机一直重启,为什么电脑老重启
- Linux下获取外网IP地址的方法
- elasticsearch分片分配和路由配置
- CoreDNS 1.9.0 openEuler 21.09 测试报告
- actived生命周期_vue组件的生命周期和执行过程
- 我们怎样才能过好这一生?
- BitLocker驱动器