首页 > 网站 > WEB开发 > 正文

java中的几种对象(PO,VO,DAO,BO,POJO)

2024-04-27 15:19:01
字体:
来源:转载
供稿:网友

java中的几种对象(PO,VO,DAO,BO,POJO)

1、PO :(persistant object ),持久对象

可以看成是与数据库中的表相映射的java对象。使用Hibernate来生成PO是不错的选择。

2、VO :(value object) ,值对象

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

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

Java Bean: 就是一个普通的Java 对象, 只不过是加了一些约束条件。  声明的 PRoperty 是 private 的, 并且,实现了 Get 和set 方法。

3、DAO :(Data access Objects)  ,数据访问对象接口DAO是Data Access Object数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。J2EE开发人员使用数据访问对象(DAO)设计模式把底层的数据访问逻辑和高层的商务逻辑分开.实现DAO模式能够更加专注于编写数据访问代码.DAO模式是标准的J2EE设计模式之一.开发人员使用这个模式把底层的数据访问操作和上层的商务逻辑分开.一个典型的DAO实现有下列几个组件:  1. 一个DAO工厂类;  2. 一个DAO接口;  3. 一个实现DAO接口的具体类;  4. 数据传递对象(有些时候叫做值对象).  具体的DAO类包含了从特定的数据源访问数据的逻辑。

4、BO :(Business Object),业务对象层表示应用程序领域内“事物”的所有实体类。这些实体类驻留在服务器上,并利用服务类来协助完成它们的职责。

5、POJO :(Plain Old Java Objects),简单的Java对象实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来,而且简称比较直接.其中有一些属性及其getter、setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。

6、Entity: 实体的意思。 在访问数据库时,才声明 Entity。 说白了, 一个Entity 就是对应表中的一条记录。 当 insert 一条记录时,就是insert 一条 Entity。

一般编写MVC的数据持久化层是使用DAO模式。所谓DAO,也就是Data Access Object(数据访问接口)。DAO与业务逻辑层传递的是一个实体对象,而这个实体对象是数据库表在程序中的一个映射。

所以对于数据库中要操作的每一张表,都要建立一个VO(实体对象)类,一个DAO接口,一个创建DAO的工厂类,以及一个DAO的实现类。而这些基本是一样的,如果程序需要访问多个表的时候,需要大量的重复劳动。就有了抽象出来的必要

 

 

首先分析DAO模式中的每一部分

VO(对象实体):这个类成员变量与数据库中每个字段一一对应,同时提供了相应是set和get方法来设置或取得数值。这个类一般是通过IDE自动生成的

DAO(数据访问接口):这个是业务逻辑层使用数据持久化层服务的一个接口

DAOFactory(工厂类):它提供了创建DAO类的一个方法,目的是更改数据持久化层实现时(比如更换数据库),不需要对业务逻辑层进行更改,只要再创建一个实现了DAO接口的类,再交给DAOFactory创建对象就可以了。为程序提供了更好的扩充性

DAOImpl(实现类):这个类实现了DAO接口。同时也是代码最多的类。

从上文分析看出,抽象DAO首先要从实现类下手。在不同的表中,DAO提供的操作基本类似,所以实现类所实现的方法基本相同,不同的地方主要有这样几个方面:

1、传递的实体类类型

2、实体类的取值赋值方法

3、SQL语句

这些问题第一个解决起来最容易,可以通过Java的泛型解决。第三个也比较容易,可以在创建时传入字段,执行时生成SQL语句。只有第二个最困难,因为并不知道实体类提供哪些方法,以及方法的返回值和参数列表,怎么样去调用未知的方法?

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表