Spring 事務原理

事務的基本原理

Spring 事務 本質上是對JDBC事務的封裝。
對于純JDBC操作數據庫,想要用到事務,可以按照以下步驟進行:

Connection con = DriverManager.getConnection()  //1.獲取連接 
try {
    con.setAutoCommit(false);   //2.開啟事務
    
    //3. do your business
    
    con.commit() //4.提交事務
} catch (Exception e){
    con.rollback(); //5.回滾
}finally{
    conn.close(); //6.關閉連接 
}

這種方式的事務管理使事務范圍可以在代碼中很清晰地表達出來,但它有以下缺點:

  • 容易出現重復代碼和錯誤
  • 任何錯誤可能產生較大的影響
  • 錯誤難以調試和復現
  • 降低了代碼庫的可讀性

使用Spring的事務管理功能后,我們可以不再寫步驟 2、4 和5的代碼,而是由Spirng 自動完成。

標準配置

要 開 啟 Spring 的 事 務 處 理 , 在 Spring 的 XML 配 置 文 件 中 簡 單 創 建 一 個 DataSourceTransactionManager 對象:

<!-- 配置事務管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="masterDataSource" />
    </bean>

    <!-- 啟用事物注解 -->
    <tx:annotation-driven transaction-manager="transactionManager" />

然后,就可以在代碼中使用 @Transactional注解了,上面的代碼就簡化為:

@Transactional
 public void businessLogic() {
       //do your business
}

通過使用@Transactional,還可以設置事務傳播、隔離級別、如何回滾等。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、事務的基本原理 Spring事務的本質其實就是數據庫對事務的支持,沒有數據庫的事務支持,spring是無法提供...
    芭蕾武閱讀 1,702評論 3 12
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,915評論 18 139
  • 一、事務的基本原理Spring事務的本質其實就是數據庫對事務的支持,沒有數據庫的事務支持,spring是無法提供事...
    阿燈_supwinr閱讀 14,782評論 2 28
  • 深入理解 Spring 事務原理參考:https://mp.weixin.qq.com/s/HHLGfRuD_Yn...
    it_zzy閱讀 771評論 0 8
  • 儀式感與生活,我一直以為這是兩個不能結合的詞語,知道我看見有人跟我說了一句,你的生活缺少一種儀式感。 不要說是儀式...
    葉小濤閱讀 226評論 0 0