1. 程式人生 > >Mybatis 事務管理

Mybatis 事務管理

工廠 height nag 發生 配置 配置文件 pan drive alt

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的事務介紹。

Mybatis 事務管理