首页 > 代码库 > Java中DAO/DTO/PO/VO/BO/QO/POJO

Java中DAO/DTO/PO/VO/BO/QO/POJO

ORM:是Object Relational Mapping(对象关系映射)的缩写。

通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在O/R/M的世界里,有两个基本的也是重要的东东需要了解,即 VO , PO 。

PO:(Persistant Object ),持久对象

可以看成是与数据库中的表相映射的Java对象。使用Hibernate来生成PO是不错的选择。它们是由一组属性和属性的get和set方法组成。

最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。 PO中应该不包含任何对数据库的操作。 

VO:(Value Object) ,值对象

通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要。

PO只能用在数据层,VO用在商业逻辑层和表示层。各层操作属于该层自己的数据对象,这样就可以降低各层之间的耦合,便于以后系统的维护和扩展。

VO与PO区别:

  • VO是用new关键字创建,由GC回收的。 
  • PO则是向数据库中添加新数据时创建,删除数据库中数据时削除的。并且它只能存活在一个数据库连接中,断开连接即被销毁。 
  • VO是值对象,精确点讲它是业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是为数据提供一个生存的地方。 
  • PO则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换。 
  • VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。 
  • PO的属性是跟数据库表的字段一一对应的。 
  • PO对象需要实现序列化接口。 

DAO:(Data Access Objects) ,数据访问对象接口

DAO是Data Access Object数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。

JavaEE开发人员使用数据访问对象(DAO)设计模式把底层的数据访问逻辑和高层的商务逻辑分开。实现DAO模式能够更加专注于编写数据访问代码。

DAO模式是标准的JavaEE设计模式之一。开发人员使用这个模式把底层的数据访问操作和上层的商务逻辑分开。一个典型的DAO实现有下列几个组件:

  • 一个DAO工厂类。
  •  一个DAO接口。
  •  一个实现DAO接口的具体类。
  • 数据传递对象(有些时候叫做值对象)。

具体的DAO类包含了从特定的数据源访问数据的逻辑。

通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法 , 结合PO对数据库进行相关的操作。夹在业务逻辑与数据库资源中间。配合VO,提供数据库的CRUD操作。

BO:(Business Object),业务对象层

表示应用程序领域内“事物”的所有实体类。这些实体类驻留在服务器上,并利用服务类来协助完成它们的职责。

封装业务逻辑的Java对象 , 通过调用DAO方法 , 结合PO、VO进行业务操作。 

主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。 

比如一个简历,有教育经历、工作经历、社会关系等等。 可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个 PO 。 建立一个对应简历的BO对象处理简历,每个BO包含这些PO 。 这样处理业务逻辑时,就可以针对BO去处理。 

POJO(POJOs):(Plain Old Java Objects),简单的Java对象

实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接。

其中有一些属性及其getter、setter方法的类,有时可以作为Value Object或DTO(Data Transform Object)来使用。当然,如果有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有Connection之类的方法。

TO:(Transfer Object),数据传输对象 

在应用程序不同的关系之间传输的对象 。

QO:(Query Object),查询对象 

DTO:(Data Transfer Object),数据传输对象 

主要用于远程调用等需要大量传输对象的地方。 

比如一张表有100个字段,那么对应的PO就有100个属性。但是界面上只要显示10个字段,客户端用Web Service来获取数据,没有必要把整个PO对象传递到客户端,这时就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构。到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。

其它:

model:一般都是JavaBean对象,例如与数据库的某个表相关联。

service:供外部调用,等于对dao,model等进行了包装。

impl:定义的接口实现。

util:通常都是工具类,如字符串处理、日期处理等。

dal:数据访问层。 

idal:数据访问接口层。

dalfactory:数据访问层工厂。

bll:业务逻辑层。

BOF:Business Object Framework,业务对象框架 

SOA:Service Orient Architecture,面向服务的设计 

EMF:Eclipse Model Framework,Eclipse建模框架

参考:

http://www.cnblogs.com/bluestorm/archive/2012/09/26/2703234.html

http://www.cnblogs.com/dzcWeb/p/7060734.html

Java中DAO/DTO/PO/VO/BO/QO/POJO