優秀是一種習慣

           

          借助 Spring AOP 進行事務管理之一

          當使用 spring 的 AOP 為 web 應用提供事務管理服務時,我們需要指定事務策略,指定事務策略的格式如下:

                 1. 傳播行為, 隔離層級, 只讀, +異常, -異常

                 2. 傳播行為必須設置,其他均可選擇性地設置,中間以英文逗號分隔,例如:PROPAGATION_REQUIRED,readOnly,-BusinessException, 注意:在 BusinessException 前面加上 - 號表示發生指定異常時回滾操作,如果加上 + 號則表示發生指定異常時立即提交操作。

                 3. 如果你沒有指定發生異常時事務該怎樣進行,那么當真的在某個事務中發生很嚴重的異常時它不會回滾事務的。而這不是我們期望看到的,所以在這里應該指定你的應用異常(即業務邏輯異常)。

          下面結合一個實例來總結一下指定事務策略時需要注意的問題。這個實例模擬一個 HR 系統中非常簡單的一部分業務邏輯--新建一個員工信息的同時為其新建一個系統用戶。

          服務層的代碼:

           

          AnotherEmpService 類源碼

           

          EmployeeDAO 類中的 insert 方法可以正常執行成功,故該類的源代碼省略。而在 UserDAO 類中我人為地扔出了一個 Exception 類型的異常,其源碼如下:

          UserDAO 類源碼

           

          聲明式事務的配置如下:

          相關配置

           

          也就是說,我們準備在服務層進行事務控制,并希望將新建員工、新建用戶這兩個原子性的操作作為一個完整的事務執行。在這里有兩個重要的因素影響著它們能否作為一個完整的事務而執行。下面我以一個表格的形式展示我的測試結果:

           

           

           

           

           

           

           

           

           

           

           

           

           

          posted on 2009-08-10 11:59 黃土高坡 閱讀(195) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 辉南县| 汉阴县| 重庆市| 阳原县| 永修县| 叶城县| 嘉禾县| 新余市| 宁海县| 开平市| 茂名市| 青龙| 吉林市| 含山县| 泌阳县| 隆安县| 潍坊市| 宝山区| 包头市| 花莲市| 舞阳县| 临江市| 塔城市| 平顶山市| 简阳市| 池州市| 呼图壁县| 云龙县| 桐城市| 嫩江县| 阳谷县| 五常市| 开江县| 乌拉特前旗| 吉林省| 青岛市| 石河子市| 金平| 唐海县| 南涧| 满洲里市|