亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

深入理解spring事務

 更新時間:2021年03月01日 17:07:43   作者:徘徊在深夜中的貓  
這篇文章主要介紹了spring事務深入理解,介紹了事物特性,事物隔離級別,事物的具體使用實例,有感興趣的同學可以研究下

事務介紹

一個事務要么同時成功,要么同時失敗

特性

  • Atomic原子性 事務是由一個或多個活動組成的一個工作單元。原子性確保事務中的所有操作全部發(fā)生或全部不發(fā)生
  • Consistent一致性 一旦事務完成,系統(tǒng)必須確保它所建模的業(yè)務處于一致的狀態(tài)
  • Isolated隔離性 事務允許多個用戶對數(shù)據(jù)進行操作,每個用戶的操作不會與其他用戶糾纏在一起
  • Durable持久性 一旦事務完成,事務的結果應該持久化

事務隔離級別

  • DEFAULT 使用底層數(shù)據(jù)庫預設的隔離層級
  • READ_UNCOMMITTED (讀未提交的數(shù)據(jù)) 允許事務讀取其他并行的事務還沒提交的數(shù)據(jù),臟讀、不可重復讀、幻讀問題都存在
  • READ_COMMITTED(讀已提交的數(shù)據(jù)) 只允許事務讀取其他并行事務提交的數(shù)據(jù),可以避免臟讀,但是不可重復讀和幻讀仍存在
  • REPEATABLE_READ(可重復讀) 確保事務可以多次從一個字段中讀取相同的值,在這個事務持續(xù)期間,禁止其他事務對這個字段進行更新,可以避免臟讀和不可重復讀,但幻讀仍存在(Mysql默認的事務隔離級別)
  • SERIALIZABLE(串行化) 確保事務可以從一個表中讀取相同的行,在這個事務持續(xù)期間,禁止其他事務對該表執(zhí)行插入、更新和刪除操作,所有并發(fā)問題都可以避免,但是性能低下

傳播行為

  • PROPAGATION_REQUIRED 支持當前事務,如果當前沒有事務,就新建一個事務
  • PROPAGATION_SUPPORTS 支持當前事務,如果當前沒有事務,就以非事務方式執(zhí)行
  • PROPAGATION_MANDATORY 支持當前事務,如果當前沒有事務,就拋出異常
  • PROPAGATION_REQUIRED_NEW 新建事務,如果當前存在事務,把當前事務掛起
  • PROPAGATION_NOT_SUPPORTED 以非事務方式執(zhí)行操作,如果當前存在事務,就把當前事務掛起
  • PROPAGATION_NEVER 以非事務方式執(zhí)行操作,如果當前存在事務,則拋出異常
  • PROPAGATION_NESTED 如果當前存在事務,則在嵌套事務內執(zhí)行,如果當前沒有事務,則新建事務

只讀

事務只進行讀取操作

readOnly=true 告訴spring當前事務只會進行讀取操作,不會進行修改操作,可以幫助數(shù)據(jù)庫引擎優(yōu)化

注:如果設置為只讀的話,千萬不要在事務里修改數(shù)據(jù),使用只讀操作時,spring不會進行加鎖處理,如果修改數(shù)據(jù)的話,會出現(xiàn)問題

事務超時

事務時間過長,則回滾

回滾規(guī)則

rollback-for 指事務對于那些檢查型異常應當回滾而不提交(默認spring會對所有的運行時異?;貪L)

no-rollback-for 指事務對于那些異常繼續(xù)執(zhí)行不回滾

事務的使用

create table user(
 id int primary key AUTO_INCREMENT,
 name varchar(20) not null,
 account double 
 )ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 insert into user (name,account) values('張三',1000);
 insert into user (name,account) values('李四',1000);
<!-- 事務 -->
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-tx</artifactId>
 <version>4.3.29.RELEASE</version>
</dependency>

<!-- 事務管理器以及數(shù)據(jù)源 -->
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-jdbc</artifactId>
 <version>4.3.29.RELEASE</version>
</dependency>

<!-- mysql驅動 -->
<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>5.1.48</version>
</dependency>

使用注解

在這里采用的是spring中的數(shù)據(jù)源

<!-- 數(shù)據(jù)源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
 <property name="driverClassName" value="com.mysql.jdbc.Driver" />
 <property name="url" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&amp;characterEncoding=utf-8" />
 <property name="username" value="root" />
 <property name="password" value="123456" />
</bean>

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

<!-- 啟用事務注解 -->
<tx:annotation-driven transaction-manager="transactionManager"/>

當然由于是使用的注解,不要忘記組件掃描

<context:component-scan base-package="com.zhanghe.study.spring4.beans.tx"/>

之后就可以在要保證事務的方法上配置@Transactional以及在該注解上配置相應的事務隔離級別(isolation)、事務傳播行為(propagation)、對哪些異常執(zhí)行回滾(rollbackFor)以及不執(zhí)行回滾(noRollbackFor) 默認對運行時異?;貪L

使用XML

<!-- 數(shù)據(jù)源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
 <property name="driverClassName" value="com.mysql.jdbc.Driver" />
 <property name="url" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&amp;characterEncoding=utf-8" />
 <property name="username" value="root" />
 <property name="password" value="123456" />
</bean>

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

<!-- 使用xml配置事務屬性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
 <tx:attributes>
 <!-- 根據(jù)方法名指定特定的事務屬性 -->
 <tx:method name="get*" read-only="true"/>
 <tx:method name="find*" read-only="true"/>
 <tx:method name="save*" propagation="REQUIRED"/>
 </tx:attributes>
</tx:advice>

<!-- 使用事務切入點,把事務切入點和事務屬性關聯(lián)起來 -->
<aop:config>
 <aop:pointcut id="pointCut" expression="execution(* com.zhanghe.study.spring4.beans.tx.UserService.*(..))"/>
 <aop:advisor advice-ref="txAdvice" pointcut-ref="pointCut"/>
</aop:config>

到此這篇關于spring事務深入理解的文章就介紹到這了,更多相關spring事務內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java Matcher匹配頭尾截取替換字符串的案例

    java Matcher匹配頭尾截取替換字符串的案例

    這篇文章主要介紹了java Matcher匹配頭尾截取替換字符串的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Java 中的抽象介紹

    Java 中的抽象介紹

    這篇文章主要介紹了Java 中的抽象,數(shù)據(jù)抽象是一種僅向用戶顯示基本細節(jié)的屬性。不向用戶顯示瑣碎或非必需的單元,下面文章Java抽象詳細內容,需要的朋友可以參考一下
    2021-12-12
  • Java項目打包發(fā)布到maven私倉常見的幾種方式

    Java項目打包發(fā)布到maven私倉常見的幾種方式

    這篇文章主要介紹了項目打包發(fā)布到maven私倉常見的幾種方式,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下
    2021-03-03
  • 一文了解Spring中攔截器的原理與使用

    一文了解Spring中攔截器的原理與使用

    在web開發(fā)中,攔截器是經(jīng)常用到的功能。它可以幫我們預先設置數(shù)據(jù)以及統(tǒng)計方法的執(zhí)行效率等等。今天就來詳細的談一下spring中的攔截器,需要的可以參考一下
    2022-06-06
  • ArrayList和JSONArray邊遍歷邊刪除到底該如何做

    ArrayList和JSONArray邊遍歷邊刪除到底該如何做

    這篇文章主要介紹了ArrayList和JSONArray邊遍歷邊刪除到底該如何做,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Java判斷上傳圖片格式的實例代碼

    Java判斷上傳圖片格式的實例代碼

    這篇文章主要介紹了Java判斷上傳圖片格式的實例代碼,在文中給大家提到了Java使用文件頭的類型判斷上傳的文件是否為圖片類型,需要的朋友可以參考下
    2019-06-06
  • Java基礎之SpringBoot整合knife4j

    Java基礎之SpringBoot整合knife4j

    Swagger現(xiàn)在已經(jīng)成了最流行的接口文檔生成與管理工具,但是你是否在用的時候也在吐槽,它是真的不好看,接口測試的json數(shù)據(jù)沒法格式化,測試地址如果更改了還要去改配置,接口測試時增加token驗證是真的麻煩…針對Swagger的種種缺點,Knife4j就呼之欲出了.需要的朋友可以參考下
    2021-05-05
  • Mybatis批量插入index out of range錯誤的解決(較偏的錯誤)

    Mybatis批量插入index out of range錯誤的解決(較偏的錯誤)

    這篇文章主要介紹了Mybatis批量插入index out of range錯誤的解決(較偏的錯誤),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 一篇文章帶你入門java網(wǎng)絡編程

    一篇文章帶你入門java網(wǎng)絡編程

    網(wǎng)絡編程是指編寫運行在多個設備(計算機)的程序,這些設備都通過網(wǎng)絡連接起來。本文介紹了一些網(wǎng)絡編程基礎的概念,并用Java來實現(xiàn)TCP和UDP的Socket的編程,來讓讀者更好的了解其原理
    2021-08-08
  • SpringAop實現(xiàn)操作日志記錄

    SpringAop實現(xiàn)操作日志記錄

    這篇文章主要介紹了SpringAop實現(xiàn)操作日志記錄的方法,幫助大家更好的理解和使用SpringAop,感興趣的朋友可以了解下
    2020-12-12

最新評論