成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Java 事務詳解

cyrils / 1731人閱讀

摘要:一個事務的執(zhí)行不能被其他事務干擾。持久性也稱永久性,指一個事務一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應該是永久性的。事務與相關聯(lián),并通過調用實例化。強制此事務回滾。為此事務注冊用戶同步回調。檢查事務是否成功提交。

一、事務

(1)事務(Transaction),一般是指要做的或所做的事情。在計算機術語中是指訪問并可能更新數(shù)據(jù)庫中各種數(shù)據(jù)項的一個程序執(zhí)行單元(unit)。

(2)事務應該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為ACID特性。
原子性(atomicity)。一個事務是一個不可分割的工作單位。比如A向B轉賬1000元,那么這就一定要保證原子性(要么同時成功,要么同時失敗)。

一致性(consistency)。事務必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài),一致性與原子性是密切相關的。比如A向B轉賬,不可能A扣了錢,B卻沒收到(這就是非一致性)。

隔離性(isolation)。一個事務的執(zhí)行不能被其他事務干擾。即一個事務內部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務是隔離的,并發(fā)執(zhí)行的各個事務之間不能互相干擾。比如A和C同時向B轉賬,那B同一時間只能和一個人交易(同時只能有一個交易在執(zhí)行)。

持久性(durability)。持久性也稱永久性(permanence),指一個事務一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。A向B轉賬,成功以后B的賬戶就存入了轉賬數(shù)額,在不做其他的操作前提下數(shù)據(jù)是永久性的。

二、Hibernate事務處理

(1)Hibernate事務處理

在Hibernate框架中,使用Transaction接口來維護了事務實現(xiàn)(JTA,JDBC)的抽象。
事務與Session相關聯(lián),并通過調用session.beginTransaction()實例化。

Transaction接口的方法如下:
void begin() 開始一個新的事務。
void commit() 結束工作單位,在FlushMode.NEVER中除外。
void rollback() 強制此事務回滾。
void setTimeout(int seconds) 它為由此實例開始的后續(xù)調用啟動的任何事務設置事務超時。
boolean isAlive() 檢查交易是否仍然存在。
void registerSynchronization(Synchronization s) 為此事務注冊用戶同步回調。
boolean wasCommited() 檢查事務是否成功提交。
boolean wasRolledBack() 檢查事務是否成功回滾。

(2)Hibernate事務綁定

Hibernate使用本地線程綁定事務(所以不能在一個線程中啟動多個線程去操作不同的數(shù)據(jù)工作),當請求Service方法時打開通過Soring AOP 自動打開 Hibernate Session,啟動事務,執(zhí)行所有與數(shù)據(jù)相關的工作,結束事務并關閉Session。模式的關鍵是交易與交易之間的一對一關系 Session。

例子:

public Integer save(One one,Tow tow) {
    oneDao.save(one);
    towDao.save(tow);
    return 1;
}

三、分布式事務

(1)JTA
在應用系統(tǒng)數(shù)據(jù)量越來越大時,系統(tǒng)數(shù)據(jù)就需要分布在不同的數(shù)據(jù)庫中,當業(yè)務需求在多個數(shù)據(jù)庫中做原子性操作時就可以選擇JTA (Java Transaction API),JTA事務比JDBC事務更強大。一個JTA事務可以有多個參與者,而一個JDBC事務則被限定在一個單一的數(shù)據(jù)庫連接。

(2)JTA原理
不同的數(shù)據(jù)庫有不同的數(shù)據(jù)庫供應商,JTA就是將這個不同的數(shù)據(jù)庫管理起來,統(tǒng)一創(chuàng)建一個原子事務,全部成功即成功,一個不成功就回滾所有的操作(JTA還是較重量級)

(3)實例
Spring有很多的JTA框架,這里使用的是atomikos框架,具體代碼請點擊鏈接查看

四、分布式消息最終一致性事務

(1)最終一致性
當應用系統(tǒng)數(shù)據(jù)越來越龐大,最終數(shù)據(jù)的一致性成為了一個很好的解決方案,即能即時響應,又能很好的完成多個數(shù)據(jù)操作(但不能保證一定成功,可能過了一段時間最終卻沒有成功)。

(2)實現(xiàn)原理
當應用收到請求,應用會先將用戶請求的數(shù)據(jù)保存到分布式消息中間件中,做一個保存操作。保存成功后就給用戶返回提交成功信息。接著分布式消息中間件將請求在發(fā)送到不同的處理機器上,處理機器收到消息在進行業(yè)務處理。比如A給B轉賬,A先提交轉賬信息(已經(jīng)扣款),然后消息被發(fā)送的分布式消息中間件上,消息中間件在發(fā)送到處理機器上面做處理,轉賬成功后則在給用戶發(fā)送轉賬成功信息,不成功則把款退回去。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/71536.html

相關文章

  • 事務隔離級別(圖文詳解)

    摘要:事務隔離級別圖文詳解什么是事務事務是邏輯上的一組操作,要么都執(zhí)行,要么都不執(zhí)行??纱谢罡叩母綦x級別,完全服從的隔離級別。存儲引擎在分布式事務的情況下一般會用到可串行化隔離級別?;貪L會結束用戶的事務,并撤銷正在進行的所有未提交的修改。 該文已加入筆主的開源項目——JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識的文檔類項目),地址:https://github.c...

    taowen 評論0 收藏0
  • 可能是最漂亮的Spring事務管理詳解

    摘要:事務隔離級別定義了一個事務可能受其他并發(fā)事務影響的程度我們先來看一下并發(fā)事務帶來的問題,然后再來介紹一下接口中定義了五個表示隔離級別的常量。 Java面試通關手冊(Java學習指南):https://github.com/Snailclimb/Java_Guide 微信閱讀地址鏈接:可能是最漂亮的Spring事務管理詳解 事務概念回顧 什么是事務? 事務是邏輯上的一組操作,要么都執(zhí)行,...

    鄒立鵬 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<