本文只是用通俗的实例简单理解概念,深层理解请参考链接:
http://www.hollischuang.com/archives/553
http://kb.cnblogs.com/page/522348/
假如数据库中有表Person分别有几个字段,姓名、性别(0,1)、生日(date)、密码,前端查询界面需要查看Person的信息。
PO:
persistant object持久对象
最形象的理解就是一个PO就是数据库中的一条记录。 好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。
DO:
个人简单理解就是类似托管的PO,操作DO不会影响数据库的数据。
DTO:
数据传输对象。例如前台查询不会返回密码只是返回 姓名、性别、生日,于是我们将信息封装到DTO中进行传输。
VO:
value object值对象、view object视图对象。
主要用于业务层之间的数据传递,属性是根据当前业务的不同而不同的。
应用场景:获取的DTO数据中性别信息为0和1,但要求:手机上展示为帅哥和美女,而web端显示为男和女。
FormBean:
它只是HTML表单的封装,是为了在控制层弱化request中存储数据的作用,将request的get方法转变为对象的存取值。
如果让FormBean直接到业务层(它本来应该生活在控制层),View和Model就出现了强耦合,如果想改一下view的表示,整个业务逻辑都得改,恐怖的事情啊。
应用场景:
假如需要查询Person信息,并返回给前端” 姓名、年龄、是否成年 “。如果将FormBean直接作用与业务层,那么相关联的业务中都会设置这个”是否未成年“的字段,显然这不可取的。如果用VO处理业务那么简单多了,相关联的业务就不会受到影响,只需在FromBean里加一个字段就可以了,然后将VO转为FormBean交给前端。