PO是持久化对象,它只是将物理数据实体的一种对象表示,为什么需要它?因为它可以简化我们对于物理实体的了解和耦合,简单地讲,可以简化对象的数据转换为物理数据的编程。VO是什么?它是值对象,准确地讲,它是业务对象,是生活在业务层的,是业务逻辑需要了解,需要使用的,再简单地讲,它是概念模型转换得到的。FormBean又是什么?它只是HTML表单的封装,是为了在控制层弱化request中存储数据的作用,将request的get方法转变为对象的存取值。 
理清了上述概念,好,我们就开始讨论,为什么需要它们,为什么不需要它们。首先说PO和VO吧,它们的关系应该是相互独立的,一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(当然我是指他们的属性)。正因为这样,PO独立出来,数据持久层也就独立出来了,它不会受到任何业务的干涉。又正因为这样,业务逻辑层也独立开来,它不会受到数据持久层的影响,业务层关心的只是业务逻辑的处理,至于怎么存怎么读交给别人吧!不过,另外一点,如果我们没有使用数据持久层,或者说没有使用hibernate,那么PO和VO也可以是同一个东西,虽然这并不好。其次,让我们看看FormBean和VO,如果简单地讲,我们是可以不需要FormBean的,它只是struts带来的一部分,而VO是无论如何不能舍弃的。如果让FormBean直接到业务层(它本来应该生活在控制层),那么会带来什么?View和Model就出现了强耦合,如果想改一下view的表示,整个业务逻辑都得改,恐怖的事情啊!

这些对象概念的出现其实就是体现了一种层的思维,也是体现了一种框架的思维,在层与层之间我们需要什么?我们应该怎么通信,其实大家认真地用笔画上几个图就可以知道了。做web应用尤其是企业应用,切忌像楼上某些朋友说的,一个东东从头到尾,那是非常低劣和错误的设计。我们不要单纯地就为了某些对象去争论什么,它们更多的只是思维。这样的思维给我们带来了哪些好处,不言自明,当然,我们也不得不否认,我们因此失去了某些东西,比如局部的性能或者繁琐的代码和调用过程,只是自己衡量一下,它是否值得。

本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/360030,如需转载请自行联系原作者

PO、VO、FormBean的思考相关推荐

  1. JavaEE PO VO BO DTO POJO DAO 整理总结(转)

    阅读目录 1.DAO[data access object]数据访问对象 2.DTO[data transfer object]数据传输对象 3.PO[persistant object]持久层对象 ...

  2. JavaEE PO VO BO DTO POJO DAO 整理总结

    阅读目录 1.DAO[data access object]数据访问对象 2.DTO[data transfer object]数据传输对象 3.PO[persistant object]持久层对象 ...

  3. po vo pojo domain 区别

    POJO = "Plain Old Java Object",是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean ...

  4. java的(PO,VO,TO,BO,DAO,POJO)类名包名解释

    java的(PO,VO,TO,BO,DAO,POJO)解释 action包  顾名思义请求,主要是和view 即我们所说的视图就是页面打交道,action类 是 操作方法,对于页 面Form 表单的操 ...

  5. java中一些对象(po,vo,dao,pojo)等的解释

    一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数 ...

  6. java的(PO,VO,TO,BO,DAO,POJO)解释

    java的(PO,VO,TO,BO,DAO,POJO)解释    O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库 ...

  7. java的(PO,VO,TO,BO,DAO,POJO)解释1

    java的(PO,VO,TO,BO,DAO,POJO)解释  O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定 ...

  8. 领域模型命名规约【PO,VO,POJO,BO,DTO,DO,JavaBean】

    PO,VO,POJO,BO,DTO,DO,JavaBean 在这之前我先说一下,在阿里巴巴开发手册中有提到这种领域模型命名规约,即如下图: 下面是更加详细的介绍: po PO(Persistant O ...

  9. java 数据对象_java的几种对象(PO,VO,DAO,BO,POJO)

    一.PO persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数 ...

  10. java的几种对象(PO,VO,DAO,BO,POJO)解释

    本文转自: http://blog.csdn.net/bzhxuexi/article/details/8227808 Java的几种对象(PO,VO,DAO,BO,POJO)解释   一.PO:pe ...

最新文章

  1. Android常见XML属性解析
  2. VTK一个面向对象的可视化类库
  3. TCanvas 学习
  4. 牛客练习赛50-记录
  5. CVPR 2020 论文大盘点-目标检测篇
  6. Keras同时用多张显卡训练网络
  7. markdown编辑器语法——字体、字号与颜色
  8. Linux如何搭建Java部署环境
  9. python 调用 c 生成数组_使用C类型如何将数组从C++函数返回到Python
  10. 【学习总结】GirlsInAI ML-diary day-5-布尔表达式/Bool
  11. 计算机网络医院拓扑图方案设计,【方案】某医院计算机网络综合布线系统设计...
  12. The proxy server received an invalid response from an upstream server.
  13. python dateutil_安装python dateutil
  14. 无线网检查服务器在那,无线网络服务器地址在哪里找
  15. mysql查看占用内存或者CPU高的SQL
  16. 网络趣事 ❀ 为什么人们喜欢机械键盘
  17. java pdf 首行缩进_java使用iText生成pdf文档的对齐方式
  18. 采用头插法和尾插法建立单链表
  19. GDOI2018爆炸记
  20. 《少年的你》首映 易烊千玺坦言哭戏最有挑战

热门文章

  1. 都在建议,不要直接使用 @Async 注解,为什么?
  2. 实现一个全链路监控平台很难吗?Pinpoint、skywalking、zipkin,哪个实现比较好?...
  3. G1的Region是如何划分数量和大小的?
  4. 你能说出多线程中 sleep、yield、join 的用法及 sleep与wait区别吗?
  5. 西湖大学教授:都说不唯论文,那我们发表论文是为了什么?
  6. 吴恩达新书《Machine Learning Yearning》完整中文版 PDF 下载!
  7. DeepMind“钓鱼执法”:让AI引诱AI说错话,发现数以万计危险言论
  8. Transformer大升级!谷歌、OpenAI联合推出分层模型,刷榜ImageNet32刷新SOTA
  9. Batch Size对神经网络训练的影响
  10. 身份证丢失后被刷脸欠上万贷款,银行:人脸识别到就是你借的!