学习Spring的事务管理(二)

本文介绍了一种利用Spring框架中的TransactionTemplate类简化事务管理的方法。通过实例展示了如何使用TransactionTemplate替代繁琐的try/catch/finally代码块,实现对用户信息更新操作的事务控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用代码控制实现事物管理的另一种方式,就是通过使用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类里面,以内部类方式实现可能降低了代码的可读性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值