事務

什麼是事務?一件事情有n個組成單元 ,要麼這n個組成單元同時成功,要麼n個單元就同時失敗。就是將n個組成單元放到一個事務中。mysql

mysql的事務

默認的事務:一條sql語句就是一個事務,默認就開啓事務並提交事務.sql

手動事務:數據庫

  1. 顯示的開啓一個事務:start transaction
  2. 事務提交:commit表明從開啓事務到事務提交,中間的全部的sql都認爲有效, 真正的更新數據庫。
  3. 事務的回滾:rollback 表明事務的回滾,從開啓事務到事務回滾,中間的全部的sql操做都認爲無效,數據庫沒有被更新。

JDBC事務操做

默認是自動事務。執行sql語句executeUpdate(),每執行一次executeUpdate方法,表明事務自動提交。併發

經過jdbc的API手動事務:spa

  1. 開啓事務:conn.setAutoComnmit(false);
  2. 提交事務:conn.commit();
  3. 回滾事務:conn.rollback();

控制事務的connnection必須是同一個,即執行sql的connection與開啓事務的connnection必須是同一個才能對事務進行控制。

DBUtils事務操做

QueryRunnercode

有參構造: QueryRunner runner = new QueryRunner(DataSource dataSource); 有參構造將數據源(鏈接池)做爲參數傳入QueryRunner,QueryRunner會從鏈接池中得到一個數據庫鏈接資源操做數據庫,因此直接使用無Connection參數的update方法便可操做數據庫。對象

無參構造: QueryRunner runner = new QueryRunner(); 無參的構造沒有將數據源(鏈接池)做爲參數傳入QueryRunner,那麼咱們在使 用QueryRunner對象操做數據庫時要使用有Connection參數的方法。blog

事務特性:事務

  1. 原子性(Atomicity)原子性是指事務是一個不可分割的工做單位,事務中的操做要麼都發生,要麼都不發生。 
  2. 一致性(Consistency)一個事務中,事務先後數據的完整性必須保持一致。有非法數據(外鍵約束之類),事務撤回。
  3. 隔離性(Isolation)多個事務,事務的隔離性是指多個用戶併發訪問數據庫時, 一個用戶的事務不能被其它用戶的事務所幹擾,多個併發事務之間數據要相互隔離。
  4. 持久性(Durability)持久性是指一個事務一旦被提交,它對數據庫中數據的改變就是永久性的,接下來即便數據庫發生故障也不該該對其有任何影響。
相關文章
相關標籤/搜索