PO(Persistant Object)持久化对象
最形象的理解就是一个PO就是数据库中的一条记录,多个记录可以看成是po的一个集合。因此,PO是与数据库中的表相映射的java对象。可以把一条记录作为一个对象处理,可以方便的转化为其他对象。
VO(Value Object / View Object)值对象 / 表现层对象
通常用于业务层之间的数据传递。和PO一样也是仅仅包含数据而已,但是从意义和本质上来看是不同的。PO主要对应界面显示的数据对象,如一个web界面。
区别:
1. VO是用new关键字创建的,由GC回收。
PO则是向数据库中添加/查询数据时创建。它只能存活在一个数据库的连接中,断开连接即被销毁。
2. VO是值对象,精确点讲它是业务对象 ,是存活在业务层的
PO是有状态的,它是物理数据的对象表示。可以使我们的程序与物理数据解耦
3. VO的属性是根据当前的业务不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的类型和名称。