JDBC 資料庫事務

2021-10-25 06:22:12 字數 2405 閱讀 4822

事務:一組邏輯操作單元,使資料從一種狀態變換到另一種狀態。

事務處理:也稱為事務操作,保證所有事務都作為乙個工作單元來執行,即使出現了故障,都不能改變這種執行方式。當在乙個事務中執行多個操作時,要麼所有的事務都被提交(commit),那麼這些修改就永久的儲存下來;要麼資料庫管理系統將丟棄所作的所有修改,整個事務回滾(rollback)到最初狀態。

為確保資料庫中資料的一致性,資料的操縱應當是離散的成組的邏輯單元:當它全部完成時,資料的一致性可以保持,而當這個單元中的一部分操作失敗,整個事務應全部視為錯誤,所有從起始點以後的操作應全部回退到開始狀態。 

資料一旦提交,就不可回滾。

— 資料什麼時候意味著提交?

當乙個連線物件被建立時,預設情況下是自動提交事務:每次執行乙個 sql 語句時,如果執行成功,就會向資料庫自動提交,而不能回滾。

關閉資料庫連線,資料就會自動的提交。如果多個操作,每個操作使用的是自己單獨的連線,則無法保證事務。即同乙個事務的多個操作必須在同乙個連線下。

— jdbc程式中為了讓多個 sql 語句作為乙個事務執行:

呼叫 connection 物件的 setautocommit(false); 以取消自動提交事務

在所有的 sql 語句都成功執行後,呼叫 commit(); 方法提交事務

在出現異常時,呼叫 rollback(); 方法回滾事務

— 若此時 connection 沒有被關閉,還可能被重複使用,則需要恢復其自動提交狀態 setautocommit(true)。尤其是在使用資料庫連線池技術時,執行close()方法前,建議恢復自動提交狀態。

【案例:使用者aa向使用者bb轉賬100】

public void testjdbctransaction()  catch (exception e)  catch (sqlexception e1) 

} finally catch (sqlexception e)

//7.關閉連線

jdbcutils.closeresource(conn, null, null);

} }

其中,對資料庫操作的方法為:

//使用事務以後的通用的增刪改操作(version 2.0)

public void update(connection conn ,string sql, object... args)

// 3.執行sql語句

ps.execute();

} catch (exception e) finally

}

原子性(atomicity)

原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。  

一致性(consistency)

事務必須使資料庫從乙個一致性狀態變換到另外乙個一致性狀態。

隔離性(isolation)

事務的隔離性是指乙個事務的執行不能被其他事務干擾,即乙個事務內部的操作及使用的資料對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。

永續性(durability)

永續性是指乙個事務一旦被提交,它對資料庫中資料的改變就是永久性的,接下來的其他操作和資料庫故障不應該對其有任何影響。

每啟動乙個 mysql 程式, 就會獲得乙個單獨的資料庫連線. 每個資料庫連線都有乙個全域性變數 @@tx_isolation, 表示當前的事務隔離級別。

檢視當前的隔離級別:

select @@tx_isolation;

設定當前mysql連線的隔離級別:

set  transaction isolation level read committed;

設定資料庫系統的全域性的隔離級別:

set global transaction isolation level read committed;

補充:建立mysql資料庫使用者:

create user tom identified by 'abc123';

授予許可權:

#授予通過網路方式登入的tom使用者,對所有庫所有表的全部許可權,密碼設為abc123.

grant all privileges on *.* to tom@'%'  identified by 'abc123';

#給tom使用者使用本地命令列方式,授予atguigudb這個庫下的所有表的插刪改查的許可權。

grant select,insert,delete,update on atguigudb.* to tom@localhost identified by 'abc123';

JDBC資料庫事務

事務 一組邏輯操作單元,使資料從一種狀態變換到另一種狀態。事務處理 事務操作 保證所有事務都作為乙個工作單元來執行,即使出現了故障,都不能改變這種執行方式。當在乙個事務中執行多個操作時,要麼所有的事務都被提交 commit 那麼這些修改就永久地儲存下來 要麼資料庫管理系統將放棄所作的所有修改,整個事...

JDBC 之 資料庫事務

原子性 atomicity 原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。一致性 consistency 事務必須使資料庫從乙個一致性狀態變換到另外乙個一致性狀態。隔離性 isolation 事務的隔離性是指乙個事務的執行不能被其他事務干擾,即乙個事務內部的操作及使用...

JDBC 資料庫事務(5)

jdbc程式中為了讓多個 sql 語句作為乙個事務執行 若此時 connection 沒有被關閉,還可能被重複使用,則需要恢復其自動提交狀態 setautocommit true 尤其是在使用資料庫連線池技術時,執行close 方法前,建議恢復自動提交狀態。案例 使用者aa向使用者bb轉賬100 p...