讨论:J2EE的EJB端DAO模式的简便实现。

keikai 2002-10-31 05:09:29
标准的DAO模式,是为所有需要数据话的EntityBean写对应的DAO类,如:Dept(Id,Name,Remark),就需要生成一个DAO类DeptDao(Id,Name,Remark)。
现在我想从数据库访问得到的数据,如ResultSet直接转化成为一个通用的DAO类,该类类似一个二维表格。
如果自己实现,我初步考虑有如下几个类:
Field(Name,Type,CanNull),RowHead(fields:Filed[],addField,getField...)
Row(采用Collection实现,起到的作用类似于数据库的行,实际存储数据的地方);DataSet(rowHead,rows,addRow,removeRow...);不知道那里有现成的实例???
...全文
69 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
keikai 2002-10-31
我觉得DAO最主要的功能不是封装到数据库的操作,而是这个值对象可以直接通过网络传输,必须实现Serializable接口;客户端很多操作不需要一个重量级的实体Bean;
但是,我个人不想重头开始写这么一个类,那里有现成的类?
回复
glance 2002-10-31
照我的理解,DAO模式主要是用来屏蔽跟数据库的交互,没错你可以把所有跟数据库交互封装到一个类,这跟DAO模式的初衷还是有区别的。因为你EntityBean里面还是要写Sql语句......DAO 模式主张你直接用DAO封装到对象的级别,通过与工厂模式 值模式的结合,来实现业务对象跟数据库交互的屏蔽。而且主张DAO可以通过工具自动生成。
呵呵,个人意见……

回复
maxtiger 2002-10-31
楼上的已经讲得很具体啦
回复
keikai 2002-10-31
举个例子:
在实现的时候,我只有本地接口的EntityBean:Dept
Dept(id:int,
name:string,
parentId:int,
descript:string,
addDept(name,descript):dept,
getDepts():Collection//返回的是Dept这个EntityBean的实例的集合
getDeptsDao():DataSet//返回的是我自己的类DataSet
)
这个DataSet类可以直接从ResultSet里面装入数据,并实现Serializable接口;所以,在使用的时候,我可以不生成DeptDao这个类,而是如此使用:
getDeptsDao(){
Statement st.addBatch("Select * from Dept where parentId=?");
DataSet ds = new DataSet(st.executeQuery());
}
回复
相关推荐
发帖
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2002-10-31 05:09
社区公告
暂无公告