應用系統中的事務處理

2021-04-12 17:53:35 字數 1830 閱讀 6964

在應用系統中,我們往往需要對資料和事務進行訪問和處理,為了分離資料訪問和業務邏輯我們引入了dao,但在dao中處理事務也是一件重複無聊的工作,那麼我們可以採用現有的容器管理的事務如ejb和spring ,我個人比較喜歡spring,但是如果我們不想採用這些容器那怎麼辦呢.

我在這裡實現了乙個簡單的動態事務**類,它可以**dao介面中宣告的方法 ,通過它來建立dao的**,我們就可以在dao中只關注資料的訪問,事務由**控制.事務處理類如下:

/*** author: crazy_rain

* date: 2007-2-6

* time: 上午09:13:35

* introduction:事務處理類

*/public final class txhandler implements invocationhandler,methodinterceptor

/*** 獲取該類的乙個例項

* @return txhandler

*/public static synchronized txhandler getinstance()

return instance;

}/**

* 為給定的物件實現的介面中的方法增強事務,只能增強目標實現的介面中的方法

* @param dest 需要增強事務的物件

* @return dest的**類,實現對事務的處理

*/public object enhancetransaction(object dest)

object tar = target.get();

if(null == tar || dest != tar)

object proxy = proxy.newproxyinstance(

dest.getclass().getclassloader(),

dest.getclass().getinte***ces(),

this);

return proxy; 

}/**

* 被**例項所有實現的介面方法的呼叫都會被分派到這裡執行

* @param proxy **類的例項

* @praam method 被**例項實現的介面中的方法定義

* @param args 方法呼叫入參

* @return 方法返回值

*/public object invoke(object proxy, method method, object args) throws throwable catch(exception ex)finally

}return result;

}/**

* 方法***,當呼叫被增強類的例項方法時會轉向此處執行

* @param object 被**類的例項

* @param method 被**類的方法

* @param args 呼叫方法所需引數

* @param methodproxy **方法

*/public object intercept(object object, method method, object args, methodproxy methodproxy) throws throwable catch (exception ex)

return result;

}/**

* 對目標類進行事務增強

* @param dest 目標類

* @return 目標類的乙個子類例項,該例項**事務處理

*/public object enhancetransaction(class dest)

}該類處理了事務和異常,dao中只需處理資料訪問即可.當然上述類中還有不足,希望大家指點,共同進步.

PHP MYSQLI中事務處理

mysql事務處理讓所有sql語句執行成功後才去處理,如果有一條沒有成功或者報錯就會回滾事務,防止敏感操作處理失敗。mysql中只有innodb和bdb型別的資料表才能支援事務處理!其它型別是不支援的!mysqli autocommit false 關閉自動提交功能 sql update users...

PHP MYSQLI中事務處理

mysql事務處理讓所有sql語句執行成功後才去處理,如果有一條沒有成功或者報錯就會回滾事務,防止敏感操作處理失敗。mysql中只有innodb和bdb型別的資料表才能支援事務處理!其它型別是不支援的!mysqli autocommit false 關閉自動提交功能 sql update users...

C 中的事務處理

一般的資料庫事務控制要求事務裡所做的操作必須在同乙個資料庫內,這樣在出現錯誤的時候才能回滾 rllback 到初始狀態。這就存在乙個問題,在分布式應用程式中,往往需要同時操作多個資料庫,使用資料庫本身的事務處理,很難滿足程式對事務控制的要求。在com 中,提供了完整的事務服務,可以利用它來完成在分布...