廢話不多說,直接開始正題。
首先從事務的原則說起:
· 原子性
表示組成乙個事務的多個資料庫操作是乙個不可分隔的原子單元,只有所有的操作執行成功,整個事務才提交,事務中任何乙個資料庫操作失敗,已經執行的任何操作都必須撤銷,讓資料庫返回到初始狀態;
· 一致性
事務操作成功後,資料庫所處的狀態和它的業務規則是一致的,即資料不會被破壞。如從a賬戶轉賬100元到b賬戶,不管操作成功與否,a和b的存款總額是不變的;
· 隔離性
在併發資料操作時,不同的事務擁有各自資料空間,它們的操作不會對對方產生干擾。準確的說,並非要求做到完全無干擾,資料庫規定了多種事務隔離級別,不同隔離級別對應不同的干擾程度,隔離級別越高,資料一致性越好,但併發性越弱;
· 永續性
一旦事務提交成功後,事務中所有的資料操作都必須被持久化到資料庫中,即使提交事務後,資料庫馬上崩潰,在資料庫重啟時,也必須能保證能夠通過某種機制恢復資料。
資料庫系統的責任和我們的wc中事務模組的任務:
在這些事務特性中,資料「一致性」是最終目標,其它的特性都是為達到這個目標的措施、要求或手段。資料庫管理系統一般採用重執行日誌保證原子性、一致性和永續性,重執行日誌記錄了資料庫變化的每乙個動作,資料庫在乙個事務中執行一部分操作後發生錯誤退出,資料庫即可以根據重執行日誌撤銷已經執行的操作。此外,對於已經提交的事務,即使資料庫崩潰,在重啟資料庫時也能夠根據日誌對尚未持久化的資料進行相應的重執行操作。因此,我們不必關心資料庫事務的物理完整性,而應該關注在什麼情況下使用資料庫事務、事務對效能的影響,如何使用事務等等。
具體到我們的**中應該是什麼樣呢?
首先看看在乙個方法內的事務:
一般我們會這麼寫**:
connection conn=null; statement stmt=null; trycatch(sqlexception e)catch(sqlexception e) }finally
業務模組的設計原則
以下內容是工作中的幾點總結,總結的上下文是在關聯式資料庫的設計環境,還請各位朋友多多發表以下自己的想法。1 模組的最小單位根據乙個完整事務設計 2 模組的最小單位根據乙個完整流程設計 3 模組中,只能應用資料庫的連線,不能夠修改資料庫的連線,最好是在new方法中,獲取資料庫連線。4 業務模組中的演算...
事務ACID原則
資料庫事務 transaction 是訪問並可能操作各種資料項的乙個資料庫操作序列。事務必須滿足acid原則 即原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durability 原子性指事務是資料庫工作的最小單位,乙個事務中的所有操作要麼全部成功提...
模組間介面設計的原則
模組介面是模組之間進行對接互動的門戶,我們在設計時至少應該遵循以下四個原則 一,簡單原則。所謂簡單,主要體現在模組介面的使用方法 上,模組的使用者在不借助或借助很少的文件的情況下,就可以輕鬆使用模組所提供的功能。這首先要求介面方法的命名要規範,每個對外提供的方法名都應該有意 義,讓使用者可以通過名稱...