mybatis的事務和資料源有着非常密切的聯系。上文講述了mybatis的資料源,本文要講述的便是mybatis的事物
1.事務的分類
我們還是已一段xml配置檔案為例
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="..." value="..."/>
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
xml的transactionManager就是mybatis事務的類型。mybatis事務總共有兩種類型。
1.JDBC:使用JDBC來管理實務
2.MANAGED:使用WEB容器來管理事務
2.事務的建立
事物的建立和Datasource和相似,在系統解析xml的時候生成一個工廠類,當需要生成一個sqlssesion的時候通過工廠類生成一個transaction對象,這個對象被executor對象持有。
生成事務工廠類

生成事務
3.事務的送出
我們以一次sqlssesion.commit()為起點。來看下commit的内部究竟發生了什麼(這裡我們已JDBCTransaction為例)
1.調用executor的commit
2.調用transaction的commit
3.1JDBCTransaction調用connection的commit
3.1ManagedTransaction調用connection的commit
由此可見JDBCTransaction其實隻是對Connection做了包裝。而ManagedTransaction什麼都沒做。
以上就是mybatis的事務介紹。