<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Loading...

    java .net

    學習Spring的事務管理(一)

    哈哈,有人在我的blog上留言說也在學習spring,能不能傳個例子共同學習一下spring的事物管理,我也是學了個一知半解,剛剛研究了研究。將其中的一點自己的理解寫下來,共同學習。

    Spring的事物管理有兩種,一種是代碼控制事物,一種是聲明控制實現事物管理(也就是xml配置),咱先來說用代碼控制實現事物管理,這種方式又分為兩類,一種是實現PlatformTransactionManager接口的方法

    查了一下幫助文檔,實現了PlatformTransactionManager接口的有好多類,下面的例子代碼是用的其中的DataSourceTransactionManager.

    這是模擬用戶注冊的一個例子,下面的類實現于自定義接口UserLoginInterface(spring提倡的面向)該類里面定義了兩個屬性,一個是Springjdbc模版類,一個是事務管理器,并都提供了set方法,這兩個對象將在Ioc中自動初始化加載。其中有一個叫UserInfoVO的值對象類,用來傳遞用戶注冊信息

    //用代碼控制實現事務管理其中的實現PlatformTransactionManager接口的方法

    import java.util.*;

    import org.springframework.context.*;

    import org.springframework.jdbc.core.*;

    import org.springframework.transaction.*;

    import org.springframework.jdbc.datasource.DataSourceTransactionManager;

    import org.springframework.transaction.support.DefaultTransactionDefinition;

    public class UserLoginImple implements UserLoginInterface

    {

           //Spring jdbc模版類

        private JdbcTemplate jdbcTemplate;  

        //事務管理器 PlatformTransactionManager是一個接口

        private PlatformTransactionManager transactionManager


     

        //jdbc模版類對象的set方法

        public void setJdbcTemplate(JdbcTemplate jdbcTemplate)

        {

            this.jdbcTemplate = jdbcTemplate;

        }

       

        //事務管理器的set方法

        public void setTransactionManager(PlatformTransactionManager transactionManager)

        {

            this.transactionManager = transactionManager;

        }

       

        //插入用戶信息的方法

        public boolean doUpdateUserInfo(UserInfoVO oneUserInfo)

        {

        //定義兩個sql插入語句

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

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

     

            DefaultTransactionDefinition dtf = new                                DefaultTransactionDefinition();//事務定義

            TransactionStatus status = this.transactionManager.getTransaction(dtf);//事務狀態

            try

            {

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

                                         {oneUserInfo.getUserName(),

                                         oneUserInfo.getUserPassword()});

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

                                         {oneUserInfo.getUserName(),

                                         oneUserInfo.getUserPassword()});

                this.transactionManager.commit(status);

            }

            catch(Exception ex)

            {

                this.transactionManager.rollback(status);

                return false;

            }

        

           return true;

        }

     

    }

    關鍵看加粗的部分,首先定義一個事務,然后以這個事務為參數通過事務管理器創建一個事務狀態,開始執行sql代碼,最后事務管理器提交事務狀態,完成。其間如果出現異常,事務管理器回滾事務狀態。

    我理解著,這里面用了設計模式中的一個叫Command命令的模式,首先定義一個執行者(事務對象),然后賦予執行者使命(事務狀態),命令執行者執行其被賦予的使命,如果失敗,命令執行者撤銷執行的使命。

    不知道理解的對不對,呵呵。

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


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


    網站導航:
     

    公告

    希望有一天

    我能用鼠標雙擊我的錢包

    然后選中一張100元

    按住“ctrl+c”

    接著不停的“ctrl+v”

    嘻嘻~~~笑醒~~~



    導航

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

    統計

    常用鏈接

    留言簿(6)

    隨筆分類(102)

    隨筆檔案(398)

    文章分類

    文章檔案(10)

    有趣網絡

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产综合91精品麻豆| 国产精品亚洲视频| 亚洲欧洲国产成人精品| 日韩精品极品视频在线观看免费| 国产亚洲成归v人片在线观看 | 亚洲一区二区三区四区视频| 久久aa毛片免费播放嗯啊| 五月天网站亚洲小说| 中文字幕免费视频一| 亚洲中文字幕久久精品蜜桃| 国产成人免费高清激情视频| 亚洲精品无码永久在线观看男男| 黄色成人网站免费无码av| 国产成人亚洲综合一区| 蜜桃精品免费久久久久影院| 亚洲成a∨人片在无码2023| 国产成人免费a在线资源| j8又粗又长又硬又爽免费视频| 亚洲AV网站在线观看| 久久www免费人成看国产片| 亚洲Av综合色区无码专区桃色| 亚洲一区二区在线免费观看| 亚洲一级毛片免费在线观看| 性色av无码免费一区二区三区| 亚洲熟妇自偷自拍另欧美| 又粗又大又长又爽免费视频| 91成人免费观看在线观看| 亚洲成AV人在线播放无码| 国内精品一级毛片免费看| 亚洲av产在线精品亚洲第一站| 天天摸天天碰成人免费视频| 狼人大香伊蕉国产WWW亚洲| 日韩精品电影一区亚洲| 三年片在线观看免费观看大全一| 亚洲国产av高清无码| 国产免费午夜a无码v视频| 免费a级毛片无码a∨免费软件| 亚洲国产模特在线播放| 免费国产成人午夜电影| 91香蕉国产线观看免费全集| 亚洲成人激情小说|