流水账
BlogJava
首页
新随笔
联系
聚合
管理
随笔-0 评论-5 文章-26 trackbacks-0
用DAO工厂创建并管理dao实例
不用Spring的时候,我们常用DAO工厂来创建并管理dao实例。
daoContext.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<
daoContect
>
<
dao
id
="userDao"
class
="com.afei.dao.impl.UserDaoHibernate"
></
dao
>
<
dao
id
="messageDao"
class
="com.afei.dao.impl.MessageDaoHibernate"
></
dao
>
</
daoContect
>
DaoFactory.java
public
class
DaoFactory
{
//
建立一个DAO实例的缓冲池
private
Map
<
String,Object
>
daoMap
=
new
HashMap
<
String,Object
>
();
//
建立DAO工厂实例:他是一个单态模式,所以是静态的实例
private
static
DaoFactory df;
//
初始化DAO工厂
//
构造器私有才能阻止系统创建多个DaoFactory实例
private
DaoFactory(String path)
throws
Exception
{
//
采用dom4j来读取配置文件,获得Document对象
Document doc
=
new
SAXReader().read(
new
File(path
+
"
\\daoContext.xml
"
));
Element root
=
doc.getRootElement();
//
由Document获得根元素
List el
=
root.elements();
//
由根元素获得所有元素
for
(Iterator it
=
el.iterator();it.hasNext();)
{
Element em
=
(Element)it.next();
String id
=
em.attributeValue(
"
id
"
);
String impl
=
em.attributeValue(
"
class
"
);
//
得到class表示字符串
Class implClass
=
Class.forName(impl);
//
把该字符串变成一个具体的类
Object obj
=
implClass.newInstance();
//
生成该类的对象
daoMap.put(id, obj);
//
把这个对象放到DAO缓冲池里
}
}
//
提供一个普通的入口方法,用以返回一个DaoFactory实例
public
static
DaoFactory instance(String path)
throws
Exception
{
if
(df
==
null
)
{
df
=
new
DaoFactory(path);
}
return
df;
}
//
获取具体的DAO实例
public
Object getDao(String id)
{
return
daoMap.get(id);
}
}
MessageManagerImpl.java
public
class
MessageManagerImpl
implements
MessageManager
{
private
UserDao userDao;
private
MessageDao messageDao;
//
构造方法:负责初始化DAO组件
public
MessageManagerImpl()
throws
MessageException
{
try
{
userDao
=
(UserDao)DaoFactory.instance(
null
).getDao(
"
userDao
"
);
messageDao
=
(MessageDao)DaoFactory.instance(
null
).getDao(
"
messageDao
"
);
}
catch
(Exception e)
{
e.printStackTrace();
throw
new
MessageException(
"
初始化业务逻辑组件出现异常
"
);
}
}
//
//
下面就可以用了
}
posted on 2009-05-13 13:15
L.J.
阅读(534)
评论(0)
编辑
收藏
所属分类:
J2EE
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
用DAO工厂创建并管理dao实例
XPath详解,总结
<
2024年7月
>
日
一
二
三
四
五
六
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
留言簿
给我留言
查看公开留言
查看私人留言
文章分类
EXT(3)
Hibernate(4)
J2EE(2)
Struts2(15)
Web(2)
文章档案
2009年5月 (26)
相册
我家十八
真的有外星人吗
外星人
搜索
最新评论
1. re: Struts2常用的Ajax标签[未登录]
挺不错的实用比较
--小七
2. re: struts2中文件上传过滤
123
--1233
3. re: Struts2常用的Ajax标签
dsf
--fdg
4. re: Struts2常用的Ajax标签[未登录]
@张晓滔
这博客的时间是2009年的了
--XXX
5. re: Struts2常用的Ajax标签
这是什么版本的啊,怎么我们现在用的那个导入的标签都不是啊,你导入的是Stuts 2 的标签,不是那个Ajax的标签啊
--张晓滔