(转)springMVC实现事务管理

我们都知道spring可以实现事务管理,但是如何实现?

经过查看:知道了,如果想要实现事务,必须要在@transactional标签下抛出一个新的异常,spring才可以监听到这个错误,然后实现事务回调

        /** 
         * 事务处理必须抛出异常,Spring才会帮助事务回滚 
         * @param users 
         */  
          
        @Transactional  
        @Override  
        public void insertUser(List<User> users) {  
            // TODO Auto-generated method stub  
            for (int i = 0; i < users.size(); i++) {  
                if(i<2){  
                    this.userDao.insert(users.get(i));  
                }  
                else {  
                    throw new RuntimeException();  
                }  
            }  
        }  

在transactional 层抛出异常,不能在transactional层try-catch,需要到controller层捕获事务,然后事务自动回调

认为这样就可以实现了,事务的回调功能。但是事实上依然没有改变

之后又查了一些博客,然后在另一篇博客中发现了问题

mysql数据库引擎如果是MyISAM,则不支持事务,需要改成  innoDB  才支持事务回滚

修改方法:

      查看mysql存储引擎命令,在mysql>提示符下搞入show engines;字段 Support为:Default表示默认存储引擎  
      2、设置InnoDB为默认引擎:在配置文件my.cnf中的 [mysqld] 下面加入default-storage-engine=INNODB 一句
      3、重启mysql服务器:mysqladmin -u root -p shutdown或者service mysqld restart 登录mysql数据库,

 

 

转载至:

https://blog.csdn.net/u013303551/article/details/51891791

posted @ 2018-05-19 21:34  逐风一缕  阅读(675)  评论(0)    收藏  举报