Spring 事務(wù)原理

事務(wù)的基本原理

Spring 事務(wù) 本質(zhì)上是對JDBC事務(wù)的封裝。
對于純JDBC操作數(shù)據(jù)庫,想要用到事務(wù),可以按照以下步驟進(jìn)行:

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

這種方式的事務(wù)管理使事務(wù)范圍可以在代碼中很清晰地表達(dá)出來,但它有以下缺點(diǎn):

  • 容易出現(xiàn)重復(fù)代碼和錯誤
  • 任何錯誤可能產(chǎn)生較大的影響
  • 錯誤難以調(diào)試和復(fù)現(xiàn)
  • 降低了代碼庫的可讀性

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

標(biāo)準(zhǔn)配置

要 開 啟 Spring 的 事 務(wù) 處 理 , 在 Spring 的 XML 配 置 文 件 中 簡 單 創(chuàng) 建 一 個 DataSourceTransactionManager 對象:

<!-- 配置事務(wù)管理器 -->
    <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,還可以設(shè)置事務(wù)傳播、隔離級別、如何回滾等。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、事務(wù)的基本原理 Spring事務(wù)的本質(zhì)其實(shí)就是數(shù)據(jù)庫對事務(wù)的支持,沒有數(shù)據(jù)庫的事務(wù)支持,spring是無法提供...
    芭蕾武閱讀 1,732評論 3 12
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 一、事務(wù)的基本原理Spring事務(wù)的本質(zhì)其實(shí)就是數(shù)據(jù)庫對事務(wù)的支持,沒有數(shù)據(jù)庫的事務(wù)支持,spring是無法提供事...
    阿燈_supwinr閱讀 14,833評論 2 28
  • 深入理解 Spring 事務(wù)原理參考:https://mp.weixin.qq.com/s/HHLGfRuD_Yn...
    it_zzy閱讀 792評論 0 8
  • 儀式感與生活,我一直以為這是兩個不能結(jié)合的詞語,知道我看見有人跟我說了一句,你的生活缺少一種儀式感。 不要說是儀式...
    葉小濤閱讀 268評論 0 0

友情鏈接更多精彩內(nèi)容