讨论: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...);不知道那里有现成的实例???
...全文
95 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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());
}

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧