spring的事务是在调用业务方法之前开始的,业务方法执行完毕之后才执行commitorrollback,事务是否执行取决于是否抛出runtime异常。如果抛出runtime exception并在你的业务方法中没有catch到的话,事务会回滚。<br>在业务方法中一般不需要catch异常,如果非要catch一定要抛出throw new RuntimeException(),或者注解中指定抛异常类型@Transactional(rollbackFor=Exception.class),否则会导致事务失效,数据commit造成数据不一致,所以有些时候try catch反倒会画蛇添足。<br>6、数据库引擎不支持事务<br>这种情况出现的概率并不高,事务能否生效数据库引擎是否支持事务是关键。常用的MySQL数据库默认使用支持事务的innodb引擎。一旦数据库引擎切换成不支持事务的myisam,那事务就从根本上失效了。<br>总结<br>@Transactional 注解的看似简单易用,但如果对它的用法一知半解,还是会踩到很多坑的。<br>今天就说这么多,如果本文对您有一点帮助,希望能得到您一个点赞\ud83d\udc4d哦<br>您的认可才是我写作的动力!
"有时候后台返回数据为null值的时候,我们客户端拿来用就会发生访问不到对象本该有的方法而crash 在此,我们判断其类型是否为NSNull来进行容错处理 如下: if (![info[@""roomOwnNo""] isKindOfClass: [NSNull class]]){ self.chanquanNumber =info[@""roomOwnNo""] ; ...<br><img><br>个人博客:http://guohuaden.com/2017/03/06/json-dataNull/"