相對於全新的物件儲存而言(不管是純粹物件導向的資料庫,還是orm系統),關聯式資料庫除了不能按物件導向方式進行編碼外,其它許多方面都優於目前的物件儲存技術。
拿事務來說,關聯式資料庫事務有如下幾個基本假設:
1.事務發生在連線上,是由客戶端發起的。例如使用jdbc編寫程式,大致如下:
//建立到資料庫的連線
connection conn = drivermanager.getconnection("", "", "");
//設定連線自動提交,請注意,事務沒有顯式宣告,而是隱含在連線中
conn.setauto***mit(true);
//所有語句與連線繫結
statement stat = conn.createstatement();
//所有資料庫操作與語句繫結,也就是與連線繫結
stat.executeupdate("");
//最後,提交通過連線進行
conn.***mit();
2. 資料庫端的儲存過程等內容,看似與連線無關,其實執行時還得靠連線,如下:
create procedure test as
update test set name='a';
但該儲存過程的執行是由客戶端通過連線發起的,具體過程不再論述。
相對於資料庫事務而言,物件事務在實現上有一定的難度,針對目前流行的jdo而言,其寫法大致如下:
//乙個pm相當於資料庫的乙個連線
persistancemanager pm;
//乙個連線對應乙個事務
transaction trans = pm.currenttransaction();
trans.begin();
//查詢與pm對應,也就與事務對應
queray q = pm.newquery(student.class);
collection c = (collection)q.execute();
//查詢出來的物件與query對應,從而與事務對應
student s = (student)c.iterator().next();
s.setname("a");
trans.***mit();
從上面程式我們看不出jdo事務與資料庫事務有什麼區別,但是請注意,如果有兩個pm,這兩個pm同時修改同乙個物件,安裝關聯式資料庫的一般認識,第二個pm應當無法修改物件,因為第乙個pm會把物件鎖定,但在jdo中,這一點是無法達到的。
資料庫事務與併發
資料庫事務必須具備acid特徵 1 原子性 指整個資料事務是不可分割的工作單元。只有事務中所有操作執行成功,才算整個事務成功 事務中任何乙個sql語句執行失敗,那麼已經執行成功的sql語句也必須撤銷,資料庫狀態應該退回到執行事務前的狀態。2 一致性 指資料庫事務不能破壞關係資料的完整性以及業務邏輯上...
資料庫事務
事件是訪問並可能更新各種資料項的乙個程式執行單元。事件由事務開始與事務結束之間執行的全體操作組成。為了保證資料完整性,資料庫系統需要維護事務的以下性質 原子性 atomicity 事務中的操作要麼全部成功,要麼全部失敗。一致性 consistency 事務執行前後要保持資料庫的一致性。隔離性 iso...
資料庫 事務
資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成...