1.spring事务方法需要public
2.事务方法不要在方法层抛异常
3.异常最好使用RuntimeException,或者自定义异常,继承RuntimeException
4.方法中不要使用DDL语句(修改表,删除、新建等对表结构修改的语句)
mysql在执行DDL语句时会有一次隐式commit,不管DDL语句执行成功还是失败,都会提交。
所以当数据库执行DDL语句时,事务出现问题是不能正常回滚的。线上数据库谨慎执行DDL语句。
1.spring事务方法需要public
2.事务方法不要在方法层抛异常
3.异常最好使用RuntimeException,或者自定义异常,继承RuntimeException
4.方法中不要使用DDL语句(修改表,删除、新建等对表结构修改的语句)
mysql在执行DDL语句时会有一次隐式commit,不管DDL语句执行成功还是失败,都会提交。
所以当数据库执行DDL语句时,事务出现问题是不能正常回滚的。线上数据库谨慎执行DDL语句。