Java學習筆記:事務(wù)簡介和個人的生動形象具體詳細易懂的理解【詩書畫唱】

事務(wù)處理
事務(wù)簡介:
事務(wù)處理用于維護數(shù)據(jù)庫的完整性,它保證批
量的SQL語句要么完全執(zhí)行,要么完全不執(zhí)行。
因為當我們要執(zhí)行多條SQL語句時,如果只有前面
幾條語句執(zhí)行成功,但是后面的SQL語卻執(zhí)行失
敗的話,那么數(shù)據(jù)庫中就會殘留執(zhí)行成功的數(shù)據(jù),
而執(zhí)行失敗的語句則自然不會有數(shù)據(jù)殘留,但是
這卻會導致數(shù)據(jù)不匹配、不完整
總之一句話:事務(wù)是指一組操作,要么都執(zhí)行成
功,要么都執(zhí)行失敗。
事務(wù)的特性:
1)原子性:一組操作,要么都執(zhí)行成功,要
么都執(zhí)行失敗。
個人理解:原子是不可分割的,事務(wù)在執(zhí)行過程不可以被中斷,“不可被中斷”就類似于“原子不可被分割”,所以這種特性被命名為“原子性”。這里的”操作“一般指的是“SQL語句”的執(zhí)行,即為運行等。
2)隔離性:一個事務(wù)的操作沒有完成之前,其
他事務(wù)是不能對這個事務(wù)處理的結(jié)果進行操作的,
需要犧牲速度。
個人理解:每個事務(wù)就像隔離一切的墻壁一樣,只有打破一面墻,才可打破另一面墻,”操作完成“就像打破墻一樣。所有才叫隔離性。
3) 一致性:事物發(fā)生和發(fā)生后的總金額依然
匹配。
個人理解:一個事務(wù)必須使數(shù)據(jù)庫從一個一致性狀態(tài)變換到另一個一致性狀態(tài),就是狀態(tài)總和相等,類似于能量守恒等,變化前和變化后的各自的總和都相同,而“一致”有“相同”的意思,所有這個屬性叫“一致性”。
首先回顧一下一致性的定義。 所謂一致性, 指的是數(shù)據(jù)處于一種有意義的狀態(tài),這種狀態(tài)是語義上的而不是語法上的。最常見的例子是轉(zhuǎn)帳。例如從帳戶A轉(zhuǎn)一-筆錢到帳戶B上, 如果帳戶A.上的錢減少了,而帳戶B.上的錢卻沒有增加,那么我們認為此時數(shù)據(jù)處于不一致的狀態(tài)。
4)持久性:事務(wù)產(chǎn)生的影響是不能撤銷的。
個人理解:事務(wù)產(chǎn)生的影響是不能撤銷的,影響是持久的,所以這個屬性叫“持久性”。
事務(wù)的開啟和關(guān)閉
Connection c=DBUtils.getCon();
c. setAutoCommit(false)//設(shè)置連接為手動提交
c.commit();//在執(zhí)行完操作后提交事務(wù)
c.rollback();//出現(xiàn)異常執(zhí)行回滾
個人的理解:
auto:?英 [???t??]? 美 [??to?]? n.汽車。(開汽車大多要用手去動)
automatic 英 [???t??m?t?k]? ?美 [???t??m?t?k]? adj.自動的;
Commit:英 [k??m?t]? ?美 [k??m?t]? v.做出(錯或非法的事);犯(罪或錯等);自殺;承諾,保證(做某事、遵守協(xié)議或遵從安排等);提交?!俺兄Z”就是“提交決心”等。
roll?英[r??l]?美[ro?l]?v.滾動
back?英[b?k]?美[b?k]?adv.向后;