如何使用注解式@Transanctional实现实现事务管理。

在此用一个小例子来测试事务管理是否成功配置。代码基础是SSM框架搭建里面的测试代码。我们现在测试的方法是:我要插入一个User对象的集合,如果此对象数量小于2,那么可以成功插入,但是如果大于2,那么就抛出异常(事务处理必须抛出异常,只有这样Spring才帮助事务回滚),这样数据库就会回滚,不插入任何数据。测试结果如果数据库没插入任何数据,那么表示事务处理配置成功,反正,失败。
    注意@Transactional只能被应用到public方法上,对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能。
 
实体类、DAO接口,业务接口,以及业务实现都有,这个测试仅需要在业务层中添加一个方法,然后使用JUnit测试即可,业务实现类中添加如下方法,注意注解@Transactional:
/** 
* 事务处理必须抛出异常,Spring才会帮助事务回滚 
* @param users 
*/  

@Transactional  
@Override  
public void insertUser(List<User> users) {  
    for (int i = 0; i < users.size(); i++) {  
        if(i<2){  
            this.userDao.insert(users.get(i));  
        } else {  
            throw new RuntimeException();  
        }  
    }  
} 

 

 
接下来在测试类中添加如下方法进行测试:
@Test  
public void testTransaction(){  
    List<User> users = new ArrayList<User>();  
    for(int i=1;i<5;i++){  
        User user = new User();  
        user.setAge(i);  
        user.setPassword(i+"111111");  
        user.setUserName("测试"+i);  
        users.add(user);  
    }  
    this.userService.insertUser(users);  
} 

 

注意:此时进行JUnit测试会发现出现错误,这是因为方法中抛出了这个异常。实质上确实进行了事务管理,数据没有插入,此时表示配置成功了;反之,如果去掉注解,那么前两条数据会插入成功,然后后面会抛出异常。    
 
 
 
 

转载于:https://www.cnblogs.com/Alan0218/articles/8481849.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值