admin 管理员组

文章数量: 1086019


2024年3月28日发(作者:詹姆斯历史地位)

iBATIS DAO事务管理实现

iBATIS DAO事务管理组件不但要管理事务连接池,同时也要管理多个ORM的事务处理。iBATIS DAO框架

重要的因素之一是它全面的事务支持。iBATIS DAO框架是对通用事务管理的一个包装,向开发人员提供了一致的

事务管理抽象。iBATIS DAO目前支持如下7种实现事务的管理框架:JDBC、Apache Ojb、Toplink、JTA、SQLMap、

Hibernate和EXTERNAL事务。

JDBC的事务管理器:用DataSource API实现连接池服务。现阶段支持三种DataSource,分别为Simple、DBCP

和JNDI。Simple是采用iBATIS自己实现的一个SimpleDataSource,其理想运行场所是对可靠性要求低并且比较独

立的事务处理。DBCP是采用Jakarta DBCP的DataSource。JNDI事务是基于检索JNDI目录而生成的DataSource。

JTA事务管理器管理事务使用JTA的API来实现,实现模式与上述基本一致,还是要通过检索JNDI目录而生

成的DataSource。但这个JTA事务管理器允许开发人员对UserTransaction实例进行控制。

SQLMap事务管理器基于iBATIS SQLMap框架平台的事务处理。iBATIS DAO事务管理在此只起到一个二传

手的作用。Hibernate事务管理器、Apache Ojb事务管理器和Toplink事务管理器基本与SQLMap事务管理器类似,

都是转移给相关平台的事务管理来进行处理的。

1.iBATIS DAO事务管理的实现和配置

DAO本身是没有进行事务处理的。在事务处理方面,DAO充当了一个二传手。它把事务处理都转移给各个持

久层来进行控制,实现二传手的工具就是DaoContext。DAO所有的事务处理都提交到DaoContext接口方法,然后

DaoContext接口通过调用持久层接口的相应方法来实现。

2.DAO事务管理的结构说明

iBATIS DAO框架提供了事务管理模块。而这个事务管理可以应用到很多场合,包括JDBC、Hibernate、JTA、

SQLMap等。其中JtaDaoTransaction类、JdbcDaoTransaction类、SqlMapDaoTransaction类和HibernateDaoTransaction

类实现ConnectionDaoTransaction接口。ConnectionDaoTransaction接口继承DaoTransaction接口。而

OjbBrokerDaoTransaction类和ToplinkDaoTransaction类直接实现DaoTransaction接口。OjbBrokerTransactionManager

类、JtaDaoTransactionManager类、JdbcDaoTransactionManager类、HibernateDaoTransaction Manager类、

SqlMapDaoTransactionManager类、ToplinkDaoTransactionManager类实现DaoTransactionManager接口。具体的类结

构图如图4-15所示。

DaoTransactionManager接口和DaoTransactionDao接口的关系很奇特。TransactionManager接口只是依赖

DaoTransaction接口,两者并没有建立关联。但是,这种依赖关系可以等同于一种关联关系,即DaoTransactionManager

接口只有在DaoTransaction接口实现的条件下,才能进行正常的工作。这种依赖就好像一个桥梁,把

DaoTransactionManager接口和DaoTransaction关联了起来。

深层次地抽象两者关系,这其实是一种变形的桥梁模式。也就是说,我们可以用桥梁模式的思路去理解这种结

构模式。桥梁(Bridge)模式属于结构型设计模式。它将有关联的两个事务的抽象化与实现化脱耦,使得两者可以

独立地变化,也就是说,将它们之间的强关联变成弱关联,是指在一个软件系统的抽象化和实现化之间使用组合/

聚合关系而不是继承关系,从而使两者可以独立地变化。

图4-15 iBATIS DAO事务管理类结构图

Bridge结构如图4-16所示。Bridge角色包括抽象化(Abstraction)角色、修正抽象化(Refine Abstraction)角色、

实现化(Implementor)角色和具体实现化(Concrete Implementor)角色。

图4-16 Bridge设计模式结构

① 抽象化(Abstraction)角色:Abstraction定义抽象类的接口。维护一个指向Implemcntor类型对象的指针。

抽象化(Abstraction)角色可以是接口,也可以是抽象类。属于不可缺少角色。

② 修正抽象化(Refine Abstraction)角色:RefinedAbstraction扩充由Abstraction定义的接口 Implementor定

义实现类的接口。该接口不一定要与Abstraction的接口完全一致。

③ 实现化(Implementor)角色:lmplementor接口仅提供基本操作。这个抽象类规范具体实现化角色,规定出

具体实现化角色当有的(非私有)方法和属性。实现化(Implementor)角色可以是接口,也可以是抽象类,属于不

可缺少角色。


本文标签: 实现 接口 事务 事务管理 角色