java事務的概念淺析
事務,一般是指要做的或所做的事情。在計算機術語中是指訪問并可能更新數據庫中各種數據項的一個程序執行單元(unit)。事務(Transaction)是訪問并可能更新數據庫中各種數據項的一個程序執行單元(unit)。事務通常由高級數據庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執行所引起,并用形如begin transaction和end transaction語句(或函數調用)來界定。事務由事務開始(begin transaction)和事務結束(end transaction)之間執行的全體操作組成。
一個Java應用系統,如果要操作數據庫,則通過JDBC來實現的。增加、修改、刪除都是通過相應方法間接來實現的,事務的控制也相應轉移到Java程序代碼中。因此,數據庫操作的事務習慣上就稱為Java事務。
1、事務的特性事務必須服從ISO/IEC所制定的ACID原則。ACID是原子性(atomicity)、一致性(consistency)、隔離性 (isolation)和持久性(durability)的縮寫。
原子性(atomicity):事務是數據庫的邏輯工作單位,而且是必須是原子工作單位,對于其數據修改,要么全部執行,要么全部不執行。比如A向B轉賬1000元,那么這就一定要保證原子性(要么同時成功,要么同時失敗)。一致性(consistency):事務必須是使數據庫從一個一致性狀態變到另一個一致性狀態,一致性與原子性是密切相關的。比如A向B轉賬,不可能A扣了錢,B卻沒收到(這就是非一致性)。
隔離性(isolation):一個事務的執行不能被其他事務所影響。比如A和C同時向B轉賬,那B同一時間只能和一個人交易(同時只能有一個交易在執行)。
持久性(durability):一個事務一旦提交,事物的操作便永久性的保存在DB中。即使此時再執行回滾操作也不能撤消所做的更改。A向B轉賬,成功以后B的賬戶就存入了轉賬數額,在不做其他的操作前提下數據是永久性的。
2、事務的隔離級別串行化,Serializable,一個事務在執行過程中完全看不到其他事務對數據庫所做的更新。
可重復讀,Repeatable Read,一個事務在執行過程中可以看到其他事務已經提交的記錄,但是不能看到其他事務對已有記錄的更新。
讀已提交數據,Read Commited,一個事務在執行過程中可以看到其他事務已經提交的記錄,而且能看到其他事務對已有記錄的更新。
讀未提交數據,Read UnCommited,一個事務在執行過程中可以看到其他事務沒有提交的記錄,而且能看到其他事務沒有提交的記錄的更新。
隔離級別越高,越能保證數據的完整性和一致性,但對高并發性能影響也越大,故需要合理選擇。
3、Java中的事務處理一般情況下,J2EE應用服務器支持JDBC事務、JTA(Java Transaction API)事務、容器管理事務。一般情況下,最好不要在程序中同時使用上述三種事務類型,比如在JTA事務中嵌套JDBC事務。第二方面,事務要在盡可能短的時間內完成,不要在不同方法中實現事務的使用。
到此這篇關于java事務的概念淺析的文章就介紹到這了,更多相關java里面有事務的概念嗎內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章: