这些问题讨论的不错啊,都是我很想知道的。在我们的系统中PO,BO是相同的,设计者对BO进行了层层封装产生了VO,又由于系统是C/S结构的模式,在View层包含了许多复杂的逻辑,很多View层的代码都是新手信手写成的,导致BO被频繁访问,系统性能很差。真是糟糕之极啊。

我觉得DTO是分层的产物。

当一个系统变得复杂之后就必然要分层,分层之后就需要考虑层与层之间的交互,已是就产生了DTO。如果一个系统很复杂的话,如果不同的层是不同的人再负责的话,如果你想严格规定层与层之间的交互协议的话,那么必须在每个相邻的层间使用DTO。

小弟愚见,望各位大侠指教。

在EJB3.0架构下,不需要所谓的DTO了吧。实体直接就可以用来当作VO.

新系统设计时只需要考虑BO,其实我开始也不知道BO是什么,我只是把应用问题里的关系和操作用对象来表达,后来发现大家都这么叫,于是也这么称呼了。
我想对于一个设计优秀的系统,是不需要VO和PO,就可以表达所有领域关系、操作,并且自身相容,且能够被测试的,VO是展示给最终用户的,PO是展示给DB的,它们都不能表达领域关系,如果您发现某个BO恰好是PO(VO),只能说明它们的定义域是相同的,并不是它们在应用中的作用是相同的。

我的理解就是,用于传输得vo就是dto,vo不拿来传输就不是dto

从这点来说webwork设计还是很好的。比struts1灵活。