VO和PO 有什么区别啊?
我一直很矛盾:是否PO可以用在商业逻辑层,当作VO使用;还是将两者分开。在许多论坛上,这两者之争也很激烈。所以今天我打算把我的想法写下来。
首先,java有几种对象(PO,VO,DAO,BO,POJO)
一、PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象。使用Hibernate来生成PO是不错的选择。
二、VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.
有一种观点就是:PO只能用在数据层,VO用在商业逻辑层和表示层。各层操作属于该层自己的数据对象,这样就可以降低各层之间的耦合,便于以后系统的维护和扩展。如果将PO用在各个层中就相当于我们使用全局变量,我们知道在OO设计非常不赞成使用全局变量。
但是每次都得进行VO-PO的转换,也确实很烦。我觉得有时候也可以在某个商业逻辑或者表示层使用PO,此时在这个商业逻辑的过程中PO的状态是不发生变化的,比如显示一条商品详细信息的商业逻辑。
在开发过的项目中,规模都很小,我一直都把PO当VO用,因为PO确实很方便,结合Hibernate的DAO,我使用JAVA的集合对象作为值传递的载体,当然Struts也是我的不二之选。
我认为:在一些直观的,简单的,不易发生变化的,不需要涉及多个PO时,传递值还是使用PO好,这样可以减少大量的工作量(也就意味着减少bug,减少风险),也不需要担心未来的维护工作!
VO和PO 有什么区别啊?相关推荐
- POJO、VO、PO、FormBean区别:
首先讲一下四者的概念 POJO:Pure Old Java Object,符合Java Bean属性规范的简单Java对象,通常也称为VO(Value Object,值对象). VO:就是 ...
- PO,BO,VO和PO JO的区别
PO:persistent object 持久对 1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录. 2 .在hibernate持久化框架中与in ...
- VO BO PO DO DTO DAO POJO概念及区别
VO BO PO DO DTO DAO POJO 概念及区别 1.VO( value object) 即值对象 VO就是展示用的数据,不管展示方式是网页,还是客户端,还是APP,只要是这个东西是让人看 ...
- vo,po,pojo,dto区别
一:POJO(Plain Old Java Object) POJO 可认为是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO. 二:VO(View Object) 视图对象,用于展示层 ...
- VO、DTO、BO、PO、DO区别
VO.DTO.BO.PO.DO区别 VO:(View Object)视图对象,一般位于Controller层,用于展示视图. DTO:(Data Transfer Object)数据传输对象, 即RP ...
- IT 开发常见 英文简称 VO, BO, PO的讲解
vo=持久对象, 与数据库表一一对应 bo=业务对象, 来自vo, 但是是跟表单一一对应, 是vo满足业务逻辑的特殊实现, 就是说可能多个bo都来自同一个bo VO和PO的主要区别在于: Ø VO是独 ...
- bo JAVA是什么意思_entity、bo、vo、po、dto、pojo如何理解和区分?
Java开发过程中,基本实体类包都以entity或者model来称呼,可是不少项目中,却以Bo.Vo来命名,面试的时候,也有可能被问到这些问题.那么,这几者分别代表什么意思呢? Entity 最常用实 ...
- 【转】entity、bo、vo、po、dto、pojo如何理解和区分?
Java开发过程中,基本实体类包都以entity或者model来称呼,可是不少项目中,却以Bo.Vo来命名,面试的时候,也有可能被问到这些问题.那么,这几者分别代表什么意思呢? Entity 最常用实 ...
- vo、po、bo、dto、dao、pojo、entity如何理解和区分?
Java开发过程中,基本实体类包都以entity或者model来称呼,可是不少项目中,却以Bo.Vo来命名,面试的时候,也有可能被问到这些问题.那么,这几者分别代表什么意思呢? Entity 最常用实 ...
最新文章
- Java大厂技术文档:Redis+Nginx+设计模式+Spring全家桶+Dubbo精选
- python定义一个空数组_python如何创建空数组?
- 推荐一个ASP.NET的资源网站
- 简单暴力到dp的优化(中级篇)
- PLSQL连接本地的Oracle数据库
- 【备忘】年薪50万2017年最新北风网Spark2.0从入门到精通教程
- 朗文词典第五版安装详细步骤
- Rendezvous机制完成数据交互。Rendezvous是一个基于—_者一__者模型设计的抽象类。
- RHCE 考试经验总结
- 好女人是一所学校- -
- 硬盘数据恢复原理与方法(一)
- "Selenium + Firefox"如何使用带用户名密码认证的HTTP代理
- Navicat安装教程和评测
- Cowboy 用户指南 (二) - Erlang and the Web
- python数据建模_Python数据模型
- 三菱FX系列PLC和台达ASDA-B2伺服驱动器位置控制接线和程序示例
- 链路聚合(动态捆绑链路)、负载均衡详解、全双工与半双工区别、LACP优先级详解(附图)
- 企业员工信息管理系统源码+ppt+论文+中期检查表+sql
- 第一位女程序员奥古斯塔·爱达·金
- OD调试3--reverseMe
热门文章
- 分层结构的生活例子_分层架构中的服务层-服务层实战
- 用hutool将数字转简体中文和繁体中文,支持金额模式
- 要注意 packages.config 中的targetFramework
- python对离散功率点进行积分得到电耗
- 【VAE学习笔记】全面通透地理解VAE(Variational Auto Encoder)
- USB2.0差分线设计
- 【多目标轨迹预测】Trajectron++:Dynamically-Feasible TrajectoryForecastin With Heterogeneous Data(简化翻译+笔记)
- Selenium自动化之最大化浏览器操作
- 管理类联考——数学——记忆篇——不同角度解读——一、算术——应用题
- ll1语法分析器c语言E-E T,算术表达式的 LL(1)语法分析器