1. 程式人生 > >資料庫中的事務管理

資料庫中的事務管理

一、什麼是事務?

  在人員管理系統中,你刪除一個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的資訊,如信箱,文章等等,這樣,這些資料庫操作語句就構成一個事務!

二、事務是必須滿足4個條件(ACID)

  • 事務的原子性( Atomicity):一組事務,要麼成功;要麼撤回。
  • 一致性 (Consistency):事務執行後,資料庫狀態與其他業務規則保持一致。如轉賬業務,無論事務執行成功否,參與轉賬的兩個賬號餘額之和應該是不變的。
  • 隔離性(Isolation):事務獨立執行。一個事務處理後的結果,影響了其他事務,那麼其他事務會撤回。事務的100%隔離,需要犧牲速度。
  • 永續性(Durability):
    軟、硬體崩潰後,InnoDB資料表驅動會利用日誌檔案重構修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit 選項 決定什麼時候吧事務儲存到日誌裡。

三、併發事務問題

  • 髒讀(dirty read):讀到另一個事務的未提交新資料,即讀取到了髒資料;
  • 不可重複讀(unrepeatable):對同一記錄的兩次讀取不一致,因為另一事務對該記錄做了修改;
  • 幻讀(虛讀)(phantom read):對同一張表的兩次查詢不一致,因為另一事務插入了一條記錄。

四、jdbc處理事務

同一事務中所有的操作,都在使用同一個Connection物件。

Connection的三個方法與事務有關:

  • setAutoCommit(boolean):設定是否為自動提交事務,如果true(預設值為true)表示自動提交,也就是每條執行的SQL語句都是一個單獨的事務,如果設定為false,那麼相當於開啟了事務了;con.setAutoCommit(false) 表示開啟事務。
  • commit():提交結束事務。
  • rollback():回滾結束事務。
try{
     con.setAutoCommit(false);//開啟事務
     ......
     con.commit();//try的最後提交事務      
} catch() {
    con.rollback();//回滾事務
}

五、ssm中處理事務

1、配置檔案中加入事務管理配置

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

    <!-- 註解方式配置事務 -->
    <tx:annotation-driven transaction-manager="transactionManager" />

2、在呼叫的方法上加上@Transactional註解(必須為public方法才行,不要捕捉異常,要讓異常自動丟擲,否則不能進行事務回滾。方法要寫在服務層中在controller中無效)

相關推薦

SSM框架+MySQL資料庫配置事務管理

資料庫事務(Database Transaction) ,是指作為單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。 例如銀行轉賬,A賬戶轉100元給B賬戶,正常的流程是A賬戶減掉100元,B賬戶增加100元。如果轉賬失敗的話,不能出現A賬戶已經減掉100元而B賬戶沒有增加10

資料庫表格管理

1、建立表 create table xxx (id int primary key not null auto_increment,name varchar(20)); 紅色為欄位屬性 2、查看錶格屬性 dessc 表名; 3、查看錶格內容 select * from 表名

SpringBoot基礎教程4-1-1 使用JdbcTemplate操作資料庫事務管理

1 概述 SpringBoot封裝的JdbcTemplate,使用模板模式,去除JDBC繁瑣的重複程式碼,並提供了基於註解的事務管理;下面詳細介紹如何使用JdbcTemplate操作資料和事務管理。 2 新增依賴 <dependency> <groupId>or

從示例揭開非關係型資料庫Redis事務管理的面紗

  Redis也提供事務這樣的概念,但是相對於關係型資料庫而言,Redis目前對事務提供的是比較簡單的,Redis只能保證一個Client發起的事務命令可以連續的執行,而中間不會插入其他的Client命令,在一個Redis事務中,Redis會將所有的命令放到一個佇列中,當執行執行命

資料庫事務詳解!

首先說一下什麼是事務! 資料庫事務(Database Transaction) ,是指作為單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。 事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為一個要麼全部成功要麼全部失敗的單元,可

資料庫事務理解

一、定義 事務一系列操作的集合。也可以理解為集合中的一系列操作協作完成事務。 二、特性 事務的特性也成為ACID特性。即原子性(Atomicity)、一致性(Consistency)、隔離性(Is

資料庫 事務的四大特性(ACID),事務的隔離級別。

如果一個數據庫聲稱支援事務的操作,那麼該資料庫必須要具備以下四個特性: ⑴ 原子性(Atomicity)   原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾      因此事務的操作如果成功就必須要完全應用到資料庫,如果操作失敗則不能對資料庫有任何影

hibernate事務管理

1、 (1)Hibernate可以理解為一箇中間件。它負責把java程式的SQL語句接收過來併發送到資料庫,而資料庫返回的資訊由Hibernate接收後直接生成一個物件傳給java. 在Hibernate中有兩個特有的檔案,一個是以.hbm.xml結尾的對映檔案

資料庫事務的概念淺析

☆事務的概念   事務指邏輯上的一組操作,組成這組操作的各個單元,要不全部成功,要不全部不成功。例如:A—>B轉帳,對應於如下兩條sql語句: update from account set money=money+100 where name='b';

Spring事務管理

一、事務 1.事務邏輯上的一組操作,組成這組操作的各個邏輯單元,要麼一起成功,要麼一起失敗 2.事務特性 (1)原子性:強調事務的不可分割 (2)一致性:事務的執行的前後資料的完整性保持一致 (3)隔離性:一個事務執行過程中,不應該收到其他事務的干擾 (4)永續性:事務一

【面經】面試官問我:資料庫事務的隔離級別有哪些?各自有什麼特點?然而。。。

## 寫在前面 > 上週,一名讀者出去面試,面試官問了他有關於資料庫中事務的隔離級別的問題。然而他回答的比面試官想要的還要6。。。 > > 關注 **冰河技術** 微信公眾號,檢視更多 **面經** 與 超硬核 **專題** 技術文章。 ## 事務隔離級別 其實,面試官問的這個問題相對

spring事務管理,基於xml配置完成事務回滾;spring資料庫表中欄位名和pojo屬性名不一致時候,實現RowMapper介面手動封裝

宣告使用JDK8,spring5.0.7, 測試說明: service 層 宣告介面進行轉賬,從A轉賬B ,然後對AB 進行更新操作,在事務中對find方法開啟 只讀許可權,無法進行更新操作,造成事務回滾進行測試事務; 主要測試方法:* void tra

資料庫事務的四大特性、隔離級別以及Spring如何利用AOP進行事務管理

首先,什麼是事務? 事務就是業務上的一個邏輯單元,它能夠保證其中對資料所有的操作,要麼成功,要麼失敗。 其次,事務的特性有哪些? 1.原子性。 例如,轉賬,A賬戶減少,B賬戶增加。雖然是兩條 DML語句,但是被當做是一個整體,一次事務。兩條語句只能同時成功或者同時失敗。 2

資料庫事務管理

一、什麼是事務?   在人員管理系統中,你刪除一個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的資訊,如信箱,文章等等,這樣,這些資料庫操作語句就構成一個事務! 二、事務是必須滿足4個條件(ACID) 事務的原子性( Atomicity):一組事務,要麼成功;

mysql事務管理及spring宣告式事務主動異常丟擲使資料庫回滾

原文: http://www.cnblogs.com/wanglonghai/p/4866512.html   mysql的引擎常用的有兩個,一個MyISAM,另一個是InnoDB,mysql預設的為MyISAM,而InnoDB才是支援事務的。所以一般需要修改下

java事務管理

什麽 特殊情況 數據庫備份 bili 完成 del 同方 ger com 什麽是事務:   事務,就是一組操作數據庫的動作集合。   一組處理步驟或者全部發生或者一步也不執行,我們稱該組處理步驟為一個事務。當所有的步驟像一個操作一樣被完整地執行,我們稱該事務被提交。由於其中

Spring事務管理

java編程 聲明式事務 body ram 屬性 per col 註解 配置數據源 配置註解 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTra

Spring Boot 使用 @Transactional 註解配置事務管理

all arc obj 資料 ror 科學 部分 直接 true 事務管理是應用系統開發中必不可少的一部分。Spring 為事務管理提供了豐富的功能支持。Spring 事務管理分為編程式和聲明式的兩種方式。編程式事務指的是通過編碼方式實現事務;聲明式事務基於 AOP,將具體

資料庫事務控制語句

1、提交事務(commit) 說明:把物件資料庫的修改操作,真實在底層執行,只有提交事務以後,資料才真實存在 create table emp( id number(4) name varchar2(20) ); 首先表插入資料: insert into emp values(1,'his');

Atitit spring註解事務的demo與程式碼說明 目錄 1.1. Spring框架,要如何實現事務?有一個註解,@EnableTransactionManagement 1 1.2. 事務管理

Atitit spring註解事務的demo與程式碼說明 目錄 1.1. Spring框架中,要如何實現事務?有一個註解,@EnableTransactionManagement 1 1.2. 事務管理  99.99999%都是使用了xml來配置的 1 1.3.