在JAVA开发的过程中,常常遇到这样的包名,如entity、bo、vo、po、dto、pojo等,许多初学者看到这样的词语都回感到迷惑,下面这一篇就把这些不同而又容易让人产生迷惑的实体类做一个很好的区分。
先来一张图:
代表数据访问对象的意思,是sun的一个标准j2ee设计模式的接口之一,负责持久层的操作 。这个基本都了解,Dao和上面几个O区别最大,基本没有互相转化的可能性和必要,主要用来封装对数据的访问,注意,是对数据的访问,不是对数据库的访问。
代表简单无规则java对象
纯的传统意义的java对象,最基本的Java Bean只有属性加上属性的get和set方法.
POJO让开发者可专注于业务逻辑和脱离框架的单元测试。除此之外, 由于POJO并不需要继承框架的类或实现其接口,开发者能够极其灵活地搭建继承结构和建造应用。
作用:POJO的意义就在于它的简单而灵活性,因为它的简单和灵活,使得POJO能够任意扩展,从而胜任多个场合,也就让一个模型贯穿多个层成为现实。
先写一个核心POJO,然后实现业务逻辑接口和持久化接口,就成了Domain Model; UI需要使用时,就实现数据绑定接口,变成VO(View Object),需要进行传输的时候就可以转化为Dto对象。
代表数据传输对象的意思
是一种设计模式之间传输数据的软件应用系统,数据传输目标往往是数据访问对象从数据库中检索数据.数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具任何行为除了存储和检索的数据(访问和存取器)
简而言之,就是接口之间传递的数据封装
表里面有十几个字段:id,name,gender(M/F),age……
页面需要展示三个字段:name,gender(男/女),age
所以Dto的作用:
一是能提高数据传输的速度(减少了传输字段)
二能隐藏后端表结构
代表值对象的意思,通常用于业务层之间的数据传递,由new创建,由GC回收。
主要体现在视图的对象,对于一个WEB页面将整个页面的属性封装成一个对象,然后用一个VO对象在控制层与视图层进行传输交换。
persistant object:持久层对象
是ORM(Objevt Relational MApping)框架中Entity,PO属性和数据库中表的字段形成一一对应关系
用简单的一段话来总结全过程,PO对应数据库中的各个字段,在DAO层中转化为Dto进行传输,最后以Vo的形式在业务层显示。POJO是传统意义的java对象,可脱离业务存在。