資料庫事務與JDO事務的對比

2021-04-01 02:50:25 字數 1214 閱讀 7334

相對於全新的物件儲存而言(不管是純粹物件導向的資料庫,還是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 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成...