文档

框架概述

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 缓存

原文地址:https://www.cnblogs.com/Alandre/p/4015637.html