Java事務的個人理解小結
一、什么是Java事務
通常的觀念認為,事務僅與數(shù)據(jù)庫相關。
事務必須服從ISO/IEC所制定的ACID原則。ACID是原子性(atomicity)、一致性(consistency)、隔離性(isolation)和持久性(durability)的縮寫。事務的原子性表示事務執(zhí)行過程中的任何失敗都將導致事務所做的任何修改失效。一致性表示當事務執(zhí)行失敗時,所有被該事務影響的數(shù)據(jù)都應該恢復到事務執(zhí)行前的狀態(tài)。隔離性表示在事務執(zhí)行過程中對數(shù)據(jù)的修改,在事務提交之前對其他事務不可見。持久性表示已提交的數(shù)據(jù)在事務執(zhí)行失敗時,數(shù)據(jù)的狀態(tài)都應該正確。
通俗的理解,事務是一組原子操作單元,從數(shù)據(jù)庫角度說,就是一組SQL指令,要么全部執(zhí)行成功,若因為某個原因其中一條指令執(zhí)行有錯誤,則撤銷先前執(zhí)行過的所有指令。更簡答的說就是:要么全部執(zhí)行成功,要么撤銷不執(zhí)行。
既然事務的概念從數(shù)據(jù)庫而來,那Java事務是什么?之間有什么聯(lián)系?
實際上,一個Java應用系統(tǒng),如果要操作數(shù)據(jù)庫,則通過JDBC來實現(xiàn)的。增加、修改、刪除都是通過相應方法間接來實現(xiàn)的,事務的控制也相應轉移到Java程序代碼中。因此,數(shù)據(jù)庫操作的事務習慣上就稱為Java事務。
二、為什么需要事務
事務是為解決數(shù)據(jù)安全操作提出的,事務控制實際上就是控制數(shù)據(jù)的安全訪問。具一個簡單例子:比如銀行轉帳業(yè)務,賬戶A要將自己賬戶上的1000元轉到B賬戶下面,A賬戶余額首先要減去1000元,然后B賬戶要增加1000 元。假如在中間網(wǎng)絡出現(xiàn)了問題,A賬戶減去1000元已經(jīng)結束,B因為網(wǎng)絡中斷而操作失敗,那么整個業(yè)務失敗,必須做出控制,要求A賬戶轉帳業(yè)務撤銷。這才能保證業(yè)務的正確性,完成這個操走就需要事務,將A賬戶資金減少和B賬戶資金增加方到一個事務里面,要么全部執(zhí)行成功,要么操作全部撤銷,這樣就保持了數(shù)據(jù)的安全性。
三、Java事務的類型
Java事務的類型有三種:JDBC事務、JTA(Java Transaction API)事務、容器事務。
1、JDBC事務
JDBC 事務是用 Connection 對象控制的。JDBC Connection 接口( java.sql.Connection )提供了兩種事務模式:自動提交和手工提交。 java.sql.Connection 提供了以下控制事務的方法:
public void setAutoCommit(boolean)
public boolean getAutoCommit()
public void commit()
public void rollback()
使用 JDBC 事務界定時,您可以將多個 SQL 語句結合到一個事務中。JDBC 事務的一個缺點是事務的范圍局限于一個數(shù)據(jù)庫連接。一個 JDBC 事務不能跨越多個數(shù)據(jù)庫。
相關文章
SpringMVC通過RESTful結構實現(xiàn)頁面數(shù)據(jù)交互
RESTFUL是一種網(wǎng)絡應用程序的設計風格和開發(fā)方式,基于HTTP,可以使用XML格式定義或JSON格式定義。RESTFUL適用于移動互聯(lián)網(wǎng)廠商作為業(yè)務接口的場景,實現(xiàn)第三方OTT調(diào)用移動網(wǎng)絡資源的功能,動作類型為新增、變更、刪除所調(diào)用資源2022-08-08
詳解Java設計模式編程中命令模式的項目結構實現(xiàn)
這篇文章主要介紹了Java設計模式編程中命令模式的項目結構實現(xiàn),命令模式將請求與執(zhí)行分離,可以多個命令接口的實現(xiàn)類,隱藏真實的被調(diào)用方,需要的朋友可以參考下2016-04-04
java.net.SocketException: Connection reset 解決方法
最近糾結致死的一個java報錯java.net.SocketException: Connection reset 終于得到解決2013-03-03
IntelliJ?IDEA2022.3?springboot?熱部署含靜態(tài)文件(最新推薦)
這篇文章主要介紹了IntelliJ?IDEA2022.3?springboot?熱部署含靜態(tài)文件,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01
SpringBoot數(shù)據(jù)層測試事務回滾的實現(xiàn)流程
這篇文章主要介紹了SpringBoot數(shù)據(jù)層測試事務回滾的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-10-10

