一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java 事務詳解及簡單應用實例

Java 事務詳解及簡單應用實例

2020-07-09 11:10崢嶸life Java教程

這篇文章主要介紹了Java 事務詳解及簡單應用實例的相關資料,java事務能夠保證數據的完整性和一致性,當然這是書本上的知識,具體如何應用這里舉例說明,需要的朋友可以參考下

Java事務的簡單使用 

 Java事務在一些面試中會被問到。

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

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

本文對java事務做簡單的探討,一問到java事務我們要知道這和數據庫相關。 

一.先看一段簡單的代碼  

使用JDBC方式進行事務處理

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public int delete(int sID) {
  //實現數據庫連接的類
  DataBaseConnection dbc = new DataBaseConnection();
  //獲取連接對象
  Connection con = dbc.getConnection();
  try {
    con.setAutoCommit(false);// 更改JDBC事務的默認提交方式
    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事務
    con.setAutoCommit(true);// 恢復JDBC事務的默認提交方式
    dbc.close();
    return 1;
  }
  catch (Exception exc) {
    con.rollBack();//回滾JDBC事務
    dbc.close();
    return -1;
  }
}

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

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

 二.Java事務的基礎概念

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

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

java的事務處理描述:如果對數據庫進行多次操作,每一次的執行或步驟都是一個事務.
如果數據庫操作在某一步沒有執行或出現異常而導致事務失敗,這樣有的事務被執行有的就沒有被執行,
從而就有了事務的回滾,取消先前的操作.....   

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

例如在銀行的轉帳事務中,假定張三從自己的帳號上把1000元轉到李四的帳號上,相關的sql語句如下:

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

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

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

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

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

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

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

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

原文鏈接:http://blog.csdn.net/wenzhi20102321/article/details/52651134

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: yellow高清免费观看日本 | 国产日韩欧美在线一区二区三区 | 欧美一级视频免费观看 | 精品久久久久香蕉网 | 日韩精品一区二区三区老鸭窝 | 国产精品久久毛片完整版 | 成人午夜毛片 | sese在线观看 | 狠狠的撞进去嗯啊h女强男视频 | 亚洲 综合 欧美在线视频 | 亚洲精品久久麻豆蜜桃 | 特黄一级| 草逼吧 | 深夜福利入口 | 国自产在线精品免费 | 国产精品午夜剧场 | 国产在线成人精品 | 欧美成人精品福利网站 | 国产成人在线小视频 | 欧洲老太玩小伙 | 亚洲国产日韩欧美一区二区三区 | 亚洲精品在线免费观看视频 | 久久精品观看 | 男人操男人 | 男人在线影院 | 亚洲精彩视频在线观看 | 手机跑分排行最新排名 | 办公室操秘书 | 国产一级大片免费看 | 日韩精品国产自在欧美 | ai换脸杨颖啪啪免费网站 | 欧美黄站 | 亚洲一二区视频 | 大伊香蕉在线精品不卡视频 | 亚洲午夜性春猛交xxxx | 继的朋友无遮漫画免费观看73 | 91av免费| 丁香五香天堂网 | 国产黄频在线观看 | 国产在线观看91精品一区 | sao虎影院桃红视频在线观看 |