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 阅读(101) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

公告

希望有一天

我能用鼠标双击我的钱包

然后选中一张100元

按住“ctrl+c”

接着不停的“ctrl+v”

嘻嘻~~~笑醒~~~



导航

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

统计

常用链接

留言簿(6)

随笔分类(102)

随笔档案(398)

文章分类

文章档案(10)

有趣网络

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜