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)角色可以是接口,也可以是抽象类,属于不
可缺少角色。
版权声明:本文标题:iBATIS DAO事务管理实现 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1711621222a602225.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论