dilipy 2011-02-14
PO:persistant object持久对象
多个记录可以用PO的集合,即为BO。PO中应该不包含任何对数据库的操作。
最形象的理解就是一个PO就是数据库中的一条记录。 好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。VO :value object值对象
ViewObject表现层对象
主要对应界面显示的数据对象。对于一个WEB页面,或者SWT、SWING的一个界面,用一个VO对象对应整个界面的值。POJO:简单的Java对象(Plain Old Java Objects)实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。
例如:public class User {
private long id;
private String name;
publicvoidsetId(longid){
this.id=id;
}publicvoidsetName(Stringname){
this.name=name;
}publiclonggetId(){
returnid;
}publicStringgetName(){
returnname;
}}
DAO:Data Access Object数据访问接口。
数据访问:故名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。
DAO的功能:
1. DAO用来封装Data Source。
比如,Connection conn = DAOFacotry.createConnection()就可以把Driver. URL. username, passpword这 一些放在DAO中。以后要更改数据库的类型.比如要把MSSQL换成Oracle的话,只需要更改DAOFacory里面的getConnection()里面的Driver.URL.之类的。
2. 2、 DAO也是把对数据库的操作(比如最基本的CRUD操作)全部封装在里面。
比如说你要你要插入一个新的用户..那么.在DAO中我们只需要提供一个insertUser(User user)这一个方法就可以了..具体的操作是在DAO中实现的...那么对于要调用DAO的时候.我们只要知道insertUser(User)是用来插入一个新的用户...而不需要知道是如何实现的。
PO与POJO的区别:
持久对象实际上必须对应数据库中的entity,所以和POJO有所区别。比如说POJO是由new创建,由GC回收。但是持久对象是insert数据库创建,由数据库delete删除的。基本上持久对象生命周期和数据库密切相关。另外持久对象往往只能存在一个数据库Connection之中,Connnection关闭以后,持久对象就不存在了,而POJO只要不被GC回收,总是存在的。
由于存在诸多差别,因此持久对象PO(Persistent Object)在代码上肯定和POJO不同,起码PO相对于POJO会增加一些用来管理数据库entity状态的属性和方法。而ORM追求的目标就是要PO在使用上尽量和POJO一致,对于程序员来说,他们可以把PO当做POJO来用,而感觉不到PO的存在。