優秀是一種習慣

           

          借助 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)  編輯  收藏


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


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 桐柏县| 江源县| 星座| 康保县| 巴彦县| 西和县| 东乌珠穆沁旗| 安西县| 措美县| 黔东| 彭水| 昂仁县| 微山县| 北京市| 万载县| 姚安县| 阳曲县| 高安市| 连州市| 区。| 张家口市| 通山县| 巫山县| 金阳县| 西城区| 那曲县| 孙吴县| 新巴尔虎左旗| 丰顺县| 安宁市| 乌什县| 兴安县| 定兴县| 达孜县| 兴化市| 桃园市| 马鞍山市| 彭阳县| 屏东市| 柳河县| 石棉县|