最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 事務(wù)詳解及簡單應(yīng)用實例

 更新時間:2016年12月02日 11:53:23   作者:崢嶸life  
這篇文章主要介紹了Java 事務(wù)詳解及簡單應(yīng)用實例的相關(guān)資料,java事務(wù)能夠保證數(shù)據(jù)的完整性和一致性,當(dāng)然這是書本上的知識,具體如何應(yīng)用這里舉例說明,需要的朋友可以參考下

Java事務(wù)的簡單使用 

 Java事務(wù)在一些面試中會被問到。

面試的時候,我們首先要回答的是:事務(wù)能夠保證數(shù)據(jù)的完整性和一致性。 

如果功力深厚點的話:就說一些原理(任務(wù)開始前先設(shè)置不提交任務(wù),在所有任務(wù)完成后再提交任務(wù),
如果任務(wù)在中間斷開,就執(zhí)行回滾,撤銷前面執(zhí)行的任務(wù)),簡單一點就舉個的例子(比如存錢和取錢的問題。
比如:銀行在兩個賬戶之間轉(zhuǎn)賬,從A賬戶轉(zhuǎn)入B賬戶1000元,系統(tǒng)先減少A賬戶的1000元,然后再為B賬號增加1000元。如果全部執(zhí)行成功,數(shù)據(jù)庫處于一致性;如果僅執(zhí)行完A賬戶金額的修改,而沒有增加B賬戶的金額,則數(shù)據(jù)庫就處于不一致狀態(tài),這時就需要取消前面的操作。) 

本文對java事務(wù)做簡單的探討,一問到j(luò)ava事務(wù)我們要知道這和數(shù)據(jù)庫相關(guān)。 

一.先看一段簡單的代碼  

使用JDBC方式進(jìn)行事務(wù)處理

public int delete(int sID) { 
  //實現(xiàn)數(shù)據(jù)庫連接的類
  DataBaseConnection dbc = new DataBaseConnection(); 
  //獲取連接對象
  Connection con = dbc.getConnection(); 
  try { 
    con.setAutoCommit(false);// 更改JDBC事務(wù)的默認(rèn)提交方式 
    dbc.executeUpdate("delete from xiao where ID=" + sID); 
    dbc.executeUpdate("delete from xiao_content where ID=" + sID); 
    dbc.executeUpdate("delete from xiao_affix where bylawid=" + sID); 
    con.commit();//提交JDBC事務(wù) 
    con.setAutoCommit(true);// 恢復(fù)JDBC事務(wù)的默認(rèn)提交方式 
    dbc.close(); 
    return 1; 
  } 
  catch (Exception exc) { 
    con.rollBack();//回滾JDBC事務(wù) 
    dbc.close(); 
    return -1; 
  } 
} 

上面這一段代碼就是一個比較簡單的java事務(wù)的執(zhí)行。
上面三次執(zhí)行刪除操作,只要有一次執(zhí)行失敗,都會執(zhí)行任務(wù)回滾,相當(dāng)于要么一起成功,要么什么都沒做。

 如果沒有事務(wù)的管理,前面執(zhí)行了就會馬上在數(shù)據(jù)庫里面更新,
執(zhí)行到哪里失敗就退出不再執(zhí)行后面的任務(wù),不能保證數(shù)據(jù)的一致性。

 二.Java事務(wù)的基礎(chǔ)概念

 原子性(Atomicity)   :事務(wù)是一個完整的操作。事務(wù)的各步操作是不可分的(原子的);
       要么都執(zhí)行,要么都不執(zhí)行
一致性(Consistency):當(dāng)事務(wù)完成時,數(shù)據(jù)必須處于一致狀態(tài)
隔離性(Isolation)    :對數(shù)據(jù)進(jìn)行修改的所有并發(fā)事務(wù)是彼此隔離的,這表明事務(wù)必須是獨立的,

它不應(yīng)以任何方式依賴于或影響其他事務(wù)
永久性(Durability)  :事務(wù)完成后,它對數(shù)據(jù)庫的修改被永久保持,事務(wù)日志能夠保持事務(wù)的永久性 

java的事務(wù)處理描述:如果對數(shù)據(jù)庫進(jìn)行多次操作,每一次的執(zhí)行或步驟都是一個事務(wù).
如果數(shù)據(jù)庫操作在某一步?jīng)]有執(zhí)行或出現(xiàn)異常而導(dǎo)致事務(wù)失敗,這樣有的事務(wù)被執(zhí)行有的就沒有被執(zhí)行,
從而就有了事務(wù)的回滾,取消先前的操作.....   

在數(shù)據(jù)庫操作中,一項事務(wù)是指由一條或多條對數(shù)據(jù)庫更新的sql語句所組成的一個不可分割的工作單元。
只有當(dāng)事務(wù)中的所有操作都正常完成了,整個事務(wù)才能被提交到數(shù)據(jù)庫,如果有一項操作沒有完成,
就必須撤消整個事務(wù)。  

例如在銀行的轉(zhuǎn)帳事務(wù)中,假定張三從自己的帳號上把1000元轉(zhuǎn)到李四的帳號上,相關(guān)的sql語句如下:

update account set monery=monery-1000 where name='zhangsan'

update account set monery=monery+1000 where name='lisi'

這個兩條語句必須作為一個完成的事務(wù)來處理。只有當(dāng)兩條都成功執(zhí)行了,才能提交這個事務(wù)。
如果有一句失敗,整個事務(wù)必須撤消。

在connection類中提供了3個控制事務(wù)的方法:
(1) setAutoCommit(Boolean autoCommit):設(shè)置是否自動提交事務(wù);
(2) commit();提交事務(wù);
(3) rollback();撤消事務(wù); 
 

在jdbc api中,默認(rèn)的情況為自動提交事務(wù),也就是說,每一條對數(shù)據(jù)庫的更新的sql語句代表一項事務(wù),
操作成功后,系統(tǒng)自動調(diào)用commit()來提交,否則將調(diào)用rollback()來撤消事務(wù)。

在jdbc api中,可以通過調(diào)用setAutoCommit(false) 來禁止自動提交事務(wù)。
然后就可以把多條更新數(shù)據(jù)庫的sql語句做為一個事務(wù),在所有操作完成之后,調(diào)用commit()來進(jìn)行整體提交。
倘若其中一項 sql操作失敗,就不會執(zhí)行commit()方法,而是產(chǎn)生相應(yīng)的sqlException,
此時就可以捕獲異常代碼塊中調(diào)用rollback()方法撤消事務(wù)。

一般來說,專門開發(fā)數(shù)據(jù)庫的開發(fā)者肯定是要對事務(wù)了解很深入的,
但是一般的程序員不需要花費太多時間在這方面。對大概作用有個理解就可以了。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • JavaMail與Spring整合過程解析

    JavaMail與Spring整合過程解析

    這篇文章主要介紹了JavaMail與Spring整合過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java如何將String轉(zhuǎn)換成json對象或json數(shù)組

    Java如何將String轉(zhuǎn)換成json對象或json數(shù)組

    這篇文章主要介紹了Java如何將String轉(zhuǎn)換成json對象或json數(shù)組,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • SpringBoot+Spring Security無法實現(xiàn)跨域的解決方案

    SpringBoot+Spring Security無法實現(xiàn)跨域的解決方案

    這篇文章主要介紹了SpringBoot+Spring Security無法實現(xiàn)跨域的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java獲取當(dāng)前時間的時間戳方法總結(jié)

    Java獲取當(dāng)前時間的時間戳方法總結(jié)

    Java中獲取時間戳的方式有很多種,下面這篇文章主要給大家介紹了關(guān)于Java獲取當(dāng)前時間的時間戳的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-06-06
  • JAVA NIO實現(xiàn)簡單聊天室功能

    JAVA NIO實現(xiàn)簡單聊天室功能

    這篇文章主要為大家詳細(xì)介紹了JAVA NIO實現(xiàn)簡單聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • SpringCloud turbine監(jiān)控實現(xiàn)過程解析

    SpringCloud turbine監(jiān)控實現(xiàn)過程解析

    這篇文章主要介紹了SpringCloud turbine監(jiān)控實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Spring Boot 基于注解的 Redis 緩存使用詳解

    Spring Boot 基于注解的 Redis 緩存使用詳解

    本篇文章主要介紹了Spring Boot 基于注解的 Redis 緩存使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java實現(xiàn)解壓zip壓縮包的兩種方法(支持多層級)

    Java實現(xiàn)解壓zip壓縮包的兩種方法(支持多層級)

    壓縮文件在生活中經(jīng)常能用到,在Java中提供了壓縮和解壓縮文件的功能,本文主要介紹了Java實現(xiàn)解壓zip壓縮包的兩種方法(支持多層級),感興趣的可以了解一下
    2024-03-03
  • SpringCloud超詳細(xì)講解微服務(wù)網(wǎng)關(guān)Gateway

    SpringCloud超詳細(xì)講解微服務(wù)網(wǎng)關(guān)Gateway

    這篇文章主要介紹了SpringCloud Gateway微服務(wù)網(wǎng)關(guān),負(fù)載均衡,熔斷和限流,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • mybatis的坑-integer類型為0的數(shù)據(jù)if?test失效問題

    mybatis的坑-integer類型為0的數(shù)據(jù)if?test失效問題

    這篇文章主要介紹了mybatis的坑-integer類型為0的數(shù)據(jù)if?test失效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論

黄平县| 崇义县| 多伦县| 株洲县| 昌黎县| 沙雅县| 合山市| 喀什市| 海南省| 红河县| 安达市| 九江市| 千阳县| 大方县| 新源县| 东港市| 牡丹江市| 博湖县| 奉节县| 大埔县| 新田县| 南澳县| 莆田市| 烟台市| 海城市| 秦皇岛市| 龙井市| 朝阳市| 聂荣县| 上虞市| 通海县| 彭泽县| 密山市| 甘南县| 青阳县| 伊吾县| 怀柔区| 泽普县| 南乐县| 修文县| 博客|