Loading...

          java .net

          學(xué)習(xí)Spring的事務(wù)管理(二)

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

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

          TransactionTemplate類(lèi)的構(gòu)造器需要一個(gè)TransactionCallback接口類(lèi)型的參數(shù),而抽象類(lèi)TransactionCallbackWithoutResult實(shí)現(xiàn)了TransactionCallback接口,抽象類(lèi)TransactionCallbackWithoutResult中有一個(gè)TransactionCallbackWithoutResult()方法,該方法以TransactionStatus 為參數(shù)。所以就有了下面的用內(nèi)部類(lèi)的實(shí)現(xiàn)方式。

          public boolean doUpdateUserInfo(UserInfoVO oneUserInfo)

              {

                  //定義兩個(gè)sql插入語(yǔ)句

                  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語(yǔ)句,全部被封裝在了TransactionTemplate類(lèi)里面,以?xún)?nèi)部類(lèi)方式實(shí)現(xiàn)可能降低了代碼的可讀性。

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


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          公告

          希望有一天

          我能用鼠標(biāo)雙擊我的錢(qián)包

          然后選中一張100元

          按住“ctrl+c”

          接著不停的“ctrl+v”

          嘻嘻~~~笑醒~~~



          導(dǎo)航

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

          統(tǒng)計(jì)

          常用鏈接

          留言簿(6)

          隨筆分類(lèi)(102)

          隨筆檔案(398)

          文章分類(lèi)

          文章檔案(10)

          有趣網(wǎng)絡(luò)

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 习水县| 南康市| 天津市| 手游| 绿春县| 左云县| 霍林郭勒市| 永靖县| 夏河县| 马尔康县| 灵山县| 宁都县| 衡水市| 东兰县| 枣庄市| 镇宁| 延川县| 民县| 湾仔区| 罗山县| 安平县| 建德市| 竹北市| 阿拉善盟| 陇川县| 唐山市| 南昌县| 甘洛县| 图们市| 金乡县| 西吉县| 宣城市| 桑植县| 平罗县| 阿克苏市| 八宿县| 惠东县| 崇阳县| 济宁市| 丽水市| 唐海县|