(转)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数据库,
转载至: