[size=13px]一般在JSP页面上显示的动态数据,都是Struts Action通过request.setAttribute(key,value)设置后获取的。这个value值到底是用PO对象好呢,还是用VO对象好呢?用VO好,能理解。但我觉得有时候用PO更好,因为在页面可以导航嘛,比如只要取个图书分类对象,送到页面后,通过PO的对象导航便可以直接将该分类下所有商品都输出出来。您们觉得这样做好吗?请说明一下PO与VO在传输数据方面的具体优缺点![/size]

解决方案 »

  1.   

    补充一下:VO是不是就是BO,功能一样吧?
      

  2.   

    其实呢,不管什么O,内容都是差不多的,甚至一样,只它们所处的环境不一样
    PO = persistence object 它是hibernate的概念,存放着对应映射的数据,并且纳入其管理
    VO = value object 普通的传值对象而且,没有特别的意义
    BO = business object 业务对象,是对应的业务模块中的那些数据的。我理解是,而且上用BO取得表单数据,VO来传递数据,PO保存到数据库没再在网上搜,楼主可以再参考下网上专门的解释。
      

  3.   

    如果要求很细的话,会分为以下几种:PO = persistence object 数据映射,一般与数据表结构相同
    VO = value object 用于页面显示
    TO/BO = transmission object/business object 用于数据传输但一般项目中可能根据实际情况简化了,其他性质差不多,都是javabean
      

  4.   

    我觉得有时候用PO更好,因为在页面可以导航嘛,比如只要取个图书分类对象,送到页面后,通过PO的对象导航便可以直接将该分类下所有商品都输出出来。您们觉得这样做好吗?请说明一下PO与VO在传输数据方面的具体优缺点
      

  5.   

    po好吧。
    可以方便的通过jsp显示
      

  6.   

    首先 理解 为什么有 VO, 因为PO 直接关系到 对数据库的操作, 所以为了安全,本应在控制器出现的PO 为 替代为 VO, 流程如下:客户端提交数据 --> 控制器(将接收的数据封装为 VO,) --> 业务层(获取VO, 将VO 转为 PO) --> DAO(接收PO)
    --> 持久化(PO)
    你记住一点: 持久化只跟 PO 有关系,跟VO没有关系, 所以在插入数据时,是将 VO 转为 PO 在插入, 而在读取数据时, 读取出来的是 PO ,然后转为 VO 显示在页面上!所以 页面上显示数据显示的是 VO,