下面以最簡單的JDBC來分析一下其如何實現事務管理。
首先來看一段代碼:





































ibatis DAO事務,有兩個核心接口DaoTransactionManager和DaoTransaction
對應著不同的數據庫持久層實現,兩個接口分別對應著不同實現
查看ibatis 代碼,可以發現這些manager實現事務,就是調用事務源的事務操作方法
JdbcDaoTransactionManager





JdbcDaoTransaction


















































那么DaoTransactionManager以什么依據處理事務呢?DaoTransactionState看看DaoTransactionState的代碼,非常簡單,四個常量來表示事務處于的不同的狀態




在第一段代碼中,我們是這樣取得DAO
orderDao = (OrderDao) daoManager.getDao(OrderDao.class);
實際daoManager返回的并不是orderDao的具體實現類,它返回的DaoProxy
DaoProxy










































































ibatis控制多個DAO的事務實際是讓這些DAO共用了一個DaoTransaction(ThreadLocal),一個Connection
這里是一個事務源的情況,如果多個事務源之間要完成全局事務,還是老老實實用分布式事務管理服務吧(jta)
http://www.aygfsteel.com/ronghao 榮浩原創,轉載請注明出處:)