文档
框架概述
DAO 框架内置支持 JDBC、MyBatis 和 Hibernate 数据库访问方法,并对数据库访问机
制进行了抽象,为不同的数据库访问方法提供一致的使用接口。DAO 框架主要由以下三种组件构成:
Session Manager
实现 SessionMgr 接口,负责创建和维护数据库连接对象(Session)。
nsg通过配置的方式在应用程序启动过程中创建 Session Manager。DAO 框架为 JDBC、
MyBatis 和 Hibernate 实现了相应的 Session Manager:
- JDBC :org.nsg.dao.jdbc.JdbcSessionMgr
:org.nsg.dao.jdbc.DruidSessionMgr - MyBatis :org.nsg.dao.mybatis.MybatisSessionMgr
- Hibernate :org.nsg.dao.hbn.HibernateSessionMgr
- DAO Facade:org.nsg.dao.AbstractFacade
DAO Facade 派生于抽象类 AbstractFacade,是所有用户 DAO 的基类
DAO Facade 并实现应用程序的数据库访问方法。应用程序不会直接创建 DAO Facade 或用
户 DAO 对象实例,而是通过 FacadeProxy 创建其代理对象。DAO 框架为 JDBC、MyBatis
和 Hibernate 实现了各自的 DAO Facade:
JDBC :org.nsg.dao.jdbc.JdbcFacade
MyBatis :org.nsg.dao.mybatis.MybatisFacade
Hibernate :org.nsg.dao.hbn.HibernateFacade
DAO Facade Proxy 负责创建 DAO 代理对象,该代理对象隐含事务处理和连接管理等操
作。因此, 应用程序应该使用由 DAO Facade Proxy 创建的代理对象访问数据库,而不该直
接创建 DAO 对象。
当执行 DAO 代理对象的数据库访问方法时,如果发生错误会抛出 DAOException
(org.nsg.dao.DAOException),它是 Runtime Exception,如果有需要,程序可以在代码
中捕捉这个异常。
在应用程序中使用 DAO 框架一般需要执行以下四个步骤:
1. 在应用程序配置文件(默认:app-config.xml)中配置 Session Manager
2. 根据应用程序的需要创建 DAO 类,并实现数据库访问方法
3. 通过 DAO Facade Proxy 获取 DAO 代理对象
4. 通过 DAO 代理对象执行数据库访问方法
Session Manager初始化
Session Manager 实现了 SessionMgr 接口,SessionMgr 接口中的两个方法:
void initialize(String ... args)
void unInitialize()
分别用于初始化和销毁 Session Manager。如果在应用程序配置文件中配置了 Session
Manager,则会在应用程序启动时创建该 Session Manager 的实例并调用它的 initialize(String ...
args) 方法;在应用程序关闭前调用它的 unInitialize() 方法。对于不同类型的 Session
Manager, initialize(String ... args) 方法的参数个数和意义不确定,由 Session Manager 自行解
析,下面分别阐述 nsg内置的 Session Manager 的初始化参数含义:
JDBC Session Manager : 、 JdbcSessionMgr 、DruidSessionMgr
(其他 JDBC Session Manager : JdbcSessionMgr、 DruidSessionMgr
的参数说明请参考 API 文档)
DAO Facade
DAO Facade 派生于抽象类 AbstractFacade。作为用户 DAO 的基类, nsg内置的 DAO
Facade 都提供了很多非常有用的底层数据库访问方法,用户 DAO 使用这些方法执行数据库
访问能大大减少编程的代码量,这些方法的使用说明请参考 API 文档。
JDBC DAO Facade:org.nsg.dao.jdbc.JdbcFacade
call(…) :执行存储过程
query(…) :执行查询操作
update(…) :执行更新操作
updateAndGenerateKeys(…) :执行更新操作,并返回被影响行的主键
updateBatch(…) :执行批量更新操作
MyBatis DAO Facade:org.nsg.dao.jdbc.MybatisFacade
selectXxx(…) :执行查询操作
insert(…) :执行插入操作
update(…) :执行更新操作
delete(…) :执行删除操作
clearCache(…) :清空 Session 缓存
getMapper(…) :获取 VO Mapper
changeSessionExecutorTypeToXxx(…) :更改 Session 的 Executor Type
Hibernate DAO Facade:org.nsg.dao.jdbc.HibernateFacade
hqlQueryX(…) :执行 HQL 查询操作
hqlUpdateX(…) :执行 HQL 更新操作
namedQueryX (…) :执行命名查询操作
namedUpdateX (…) :执行命名更新操作
qbcQuery(…) :执行 QBC 查询操作
sqlQueryX(…) :执行 SQL 查询操作
sqlUpdate(…) :执行 SQL 更新操作
save(…) :保存 VO
update(…) :更新 VO
saveOrUpdate (…) :保存或更新 VO
delete (…) :删除 VO
get(…) :获取 VO
load(…) :加载 VO
clear(…) :清空 Session 缓存
flush(…) :刷新 Session 缓存