【spring】--- vo和po和dto

   文章开始,我先说一下我对这几个名词的理解,结合我做C#的时候做一个对比,可能会更方便理解。

VO:是值对象:相当于C#版ITOO中我们常说的页面实体(viewmodel)
DTO:是数据传输对象:相当于datatable或者dictionary等。
PO:持久对象,相当于一个数据库实体(entity)
DAO:数据访问对象,用于封装对数据库的访问。

    spring的框架,离不开O/R Mapping,也就是对象关系映射。就是它将对象与关系数据库绑定,用对象来表示关系数据,方便我们对数据库数据的操作;它里面有两个重要的对象:VO和PO。
VO:值对象。它用new创建,存在于业务层,是业务对象,它根据当前业务的不同而改变。这么一说就好像我们在做C#版的ITOO的时候经常提起的viewmodel(页面实体),“对于一个web页面中的所有值都可以用VO对象来盛放”这不正是页面实体的特性吗!!

PO:持久对象。它存在于一个数据库连接中,当添加一条数据它就存在,当删除一条数据它就消失。它有状态,它的属性跟数据库表的字段一一对象,它需要实现序列化接口。这几种特性让我立马就想到了在写C#的时候经常用到的数据库实体(entity),这两者简直就是太像了,可能就是到了java这边换了叫法而已!(个人瞎猜,请勿当真!(*^__^*) 嘻嘻……)

VO和PO的相同的地方就是:他们都是由get和set方法组成。

    在学习SSH的spring视频的时候,老师还介绍到了DTO,那么什么是DTO呢?
DTO:数据传输对象,顾名思义,就是用于数据传输的,但是它主要是用来传输大量对象的地方。也就是如果我大量需要数据库表的某几个字段的内容传递到客户端,那么就可以用DTO。这个特性也让我想到了以前敲c#经常用到的List或者Dictionary或者Datatable等可以盛放多个不同数据库字段的实体的东西。他们也是用来盛放我们筛选的数据并传输到客户端的。

    刚开始听老师讲的时候,感觉云里雾里,通过自己查阅资料和看视频笔记,发现真的是我以前接触过的东西,虽然没有完全一样,可是正是某些相同的特性,让我渐渐明白了原来这些对象时如此的简单。


你可能感兴趣的:(.【计算机学习】,------JAVA,------spring)