ibatis DAO 事务探索
来源:互联网 发布:易语言进销存管理源码 编辑:程序博客网 时间:2024/05/19 14:16
ibatis DAO 框架提供了事务管理模块。而这个事务管理可以应用到很多场合,包括JDBC、Hibernate、JTA、SQLMAP等。
下面以最简单的JDBC来分析一下其如何实现事务管理。
首先来看一段代码:
在method()方法里有着两个事务,如果在方法里不显式的调用daoManager.startTransaction(),则每个DAO的一次方法调用就是一个独立的事务。
ibatis DAO事务,有两个核心接口DaoTransactionManager和DaoTransaction
对应着不同的数据库持久层实现,两个接口分别对应着不同实现
查看ibatis 代码,可以发现这些manager实现事务,就是调用事务源的事务操作方法
JdbcDaoTransactionManager
JdbcDaoTransaction
那么DaoTransactionManager以什么依据处理事务呢?DaoTransactionState看看DaoTransactionState的代码,非常简单,四个常量来表示事务处于的不同的状态
public static final DaoTransactionState ACTIVE = new DaoTransactionState();
public static final DaoTransactionState INACTIVE = new DaoTransactionState();
public static final DaoTransactionState COMMITTED = new DaoTransactionState();
public static final DaoTransactionState ROLLEDBACK = new DaoTransactionState();
那么实际程序中是如何控制事务的呢
在第一段代码中,我们是这样取得DAO
orderDao = (OrderDao) daoManager.getDao(OrderDao.class);
实际daoManager返回的并不是orderDao的具体实现类,它返回的DaoProxy
DaoProxy
看到这段代码就非常清楚了,每调用DAO的一次方法时,如果不显式的调用daoManager.startTransaction(),就会成为单独的一个事务。再看看ibatis为我们提供的摸板JdbcDaoTemplate
ibatis控制多个DAO的事务实际是让这些DAO共用了一个DaoTransaction(ThreadLocal),一个Connection
注:下面这些包并不一定是该文章中的
使用到的包
hsqldb-1.8.0.5.jar
ibatis-common-2.1.5.582.jar
ibatis-dao-2.1.5.582.jar
ibatis-sqlmap-2.1.5.582.jar
log4j-1.2.12.jar
spring-2.0.1.jar
commons-logging-1.0.4.jar
- ibatis DAO 事务探索
- ibatis dao
- Ibatis 事务
- ibatis事务
- iBATIS事务
- ibatis事务
- iBATIS DAO框架分析
- iBATIS DAO入门基础教程
- iBatis DAO(一)
- iBatis DAO(二)
- iBatis DAO(三)
- iBatis DAO(四)
- iBatis DAO(五)
- ibatis dao错误
- ibatis dao模板
- iBATIS DAO framework试用
- Dao跨事务调用
- dao--3.事务
- Qt Creator 的 error: collect2: ld returned 1 exit status 问题
- Qt Creator生成的.exe文件运行缺少.dll文件解决
- 第2章链路层
- Web开发者必备的64个免费在线工具
- 弗洛伊德:《梦的解析》
- ibatis DAO 事务探索
- LWUIT的List应用系列(三)解决List获得焦点时Form自动向下滚的Bug
- 内存映射文件
- 安装 Qt Creator
- QT Creator 介绍
- [CSS]分享几条漂亮的下划线样式
- oracle xe装好后sqlplus后提示command not found
- 环境变量的配置
- 2009.12.10笔记