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

Java 事務(wù)詳解及簡(jiǎn)單應(yīng)用實(shí)例

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

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

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

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

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

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

一.先看一段簡(jiǎn)單的代碼  

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

public int delete(int sID) { 
  //實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接的類
  DataBaseConnection dbc = new DataBaseConnection(); 
  //獲取連接對(duì)象
  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; 
  } 
} 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • JavaMail與Spring整合過(guò)程解析

    JavaMail與Spring整合過(guò)程解析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    壓縮文件在生活中經(jīng)常能用到,在Java中提供了壓縮和解壓縮文件的功能,本文主要介紹了Java實(shí)現(xiàn)解壓zip壓縮包的兩種方法(支持多層級(jí)),感興趣的可以了解一下
    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ì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • mybatis的坑-integer類型為0的數(shù)據(jù)if?test失效問(wèn)題

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

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

最新評(píng)論

卫辉市| 集安市| 城步| 汝城县| 中方县| 辰溪县| 柘荣县| 鹤壁市| 彭水| 泸西县| 中卫市| 静海县| 太谷县| 大理市| 龙南县| 乐清市| 伊宁县| 南漳县| 武夷山市| 宜兴市| 阿合奇县| 长顺县| 高邮市| 水富县| 龙川县| 娱乐| 柳林县| 辰溪县| 清涧县| 镶黄旗| 嘉禾县| 特克斯县| 梅州市| 庆元县| 湖北省| 波密县| 潮州市| 鲁甸县| 图木舒克市| 建阳市| 鹤山市|