Loading...

          java .net

          學習Spring的事務管理(二)

          用代碼控制實現事物管理的另一種方式,就是通過使用TransactionTemplate模板類,TransactionTemplate封裝了事務管理的功能,包括異常時的事務回滾,以及操作成功后的事務提交。和JdbcTemplate一樣,它使得我們無需在瑣碎的try/catch/finally代碼中徘徊---也就是為我們省去了部分事務提交、回滾代碼。

          將上面的用戶信息插入方法修改成下面這樣:

          TransactionTemplate類的構造器需要一個TransactionCallback接口類型的參數,而抽象類TransactionCallbackWithoutResult實現了TransactionCallback接口,抽象類TransactionCallbackWithoutResult中有一個TransactionCallbackWithoutResult()方法,該方法以TransactionStatus 為參數。所以就有了下面的用內部類的實現方式。

          public boolean doUpdateUserInfo(UserInfoVO oneUserInfo)

              {

                  //定義兩個sql插入語句

                  String sql = "update userinfo set userPassword=? where userName=?";

                  String sql2 = "update userinfo1 set userPassword=? where userName=?";

           

              TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);

              transactionTemplate.execute(new TransactionCallbackWithoutResult()

                         {

                            public void doInTransactionWithoutResult(TransactionStatus status)

                            {

                               this.jdbcTemplate.update(sql, new Object[]

                                               {oneUserInfo.getUserName(),

                                               oneUserInfo.getUserPassword()});

                                this.jdbcTemplate.update(sql2, new Object[]

                                               {oneUserInfo.getUserName(),

                                               oneUserInfo.getUserPassword()});

                            }

                        });

           

                 return true;

              }

          這種方式,代碼量少,少了try/catch/finally語句,全部被封裝在了TransactionTemplate類里面,以內部類方式實現可能降低了代碼的可讀性。

          posted on 2008-08-26 22:06 閱讀(119) 評論(0)  編輯  收藏


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


          網站導航:
           

          公告

          希望有一天

          我能用鼠標雙擊我的錢包

          然后選中一張100元

          按住“ctrl+c”

          接著不停的“ctrl+v”

          嘻嘻~~~笑醒~~~



          導航

          <2008年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          統計

          常用鏈接

          留言簿(6)

          隨筆分類(102)

          隨筆檔案(398)

          文章分類

          文章檔案(10)

          有趣網絡

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 福海县| 蓬安县| 阳春市| 浦城县| 曲沃县| 阜宁县| 常宁市| 大理市| 湄潭县| 铅山县| 长垣县| 华阴市| 襄樊市| 郁南县| 虎林市| 阳泉市| 南召县| 阿拉善盟| 汶川县| 大城县| 中牟县| 镇原县| 忻州市| 莲花县| 兴山县| 佛山市| 德庆县| 西华县| 泰宁县| 嘉祥县| 三亚市| 北流市| 来凤县| 平阴县| 九江市| 柏乡县| 肃宁县| 海兴县| 华蓥市| 延津县| 阿瓦提县|